Numpy数组与矩阵——python学习
我前面提到过Numpy函数,但是不够全,在这里我顺便做一些补充。先说明一下我用的是Notebook。
一、数组的创建与操作
1、把列表转换为数组
np.array([1,2,3,4,5])
2、把元组转换为数组
np.array((1,2,3,4,5))
3、把range对象转换为数组
np.array(range(5))
4、二维数组,需要一个包含列表为元素的列表
a = [[1,2,3],[3,4,5],[4,5,6]]
b = np.array(a)
print(b)
5、数组转换为列表,使用 tolist()函数
a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.tolist()
print(c)
6、查看数组的数据类型 dtype
a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.dtype
print(c)
7、查看数组维度 shape
a = ([[1,2,3],[3,4,5],[4,5,6]])
b = np.array(a)
c = b.shape
print(c)
8、修改数组维度 shape / reshape
a = ([[1,2,3],[3,4,5]])
b = np.array(a)
b.shape = 3,2
print(b)
a = ([[1,2,3],[3,4,5]])
b = np.array(a)
c = b.reshape(3,2)
print(c)
9、查看数组中数据个数
a = ([[1,2,3],[3,4,5]])
b = np.array(a)
c = b.reshape(3,2)
print('size函数:',c.size)
print('len函数:',len(c))
len 是指元素的个数
size 是指数据的个数,也就是说元素可以包含多个数据。
二、多维数组
1、全零数组
np.zeros((3,3))
2、全一数组
np.ones((3,3))
三、矩阵
1、单位矩阵
np.identity(3)
2、空数组
np.empty(3)
3、对角数组
np.diag([1,2,3,4])
四、多维数组
使用np.full ( shape, val)函数创建多维数组,猫哥元素均填充为val。
np.full((3,4),9)
五、实验
生成5*5的ndarray对象,且矩阵边界全为1,里面全为0。
方法1:
-
初始矩阵:
a = np.zeros((3,3))
→ 3x3 的零矩阵。 -
向下扩展:
a = np.r_[a, np.ones((1,3))]
→ 添加一行1,变为4x3。 -
向上扩展:
a = np.r_[np.ones((1,3)), a]
→ 顶部添加一行1,变为5x3。 -
向左扩展列:
a = np.c_[np.ones((5,1)), a]
→ 左边添加一列1,变为5x4。 -
向右扩展列:
a = np.c_[a ,np.ones((5,1))]
→ 右边添加一列1,变为5x5。
import numpy as npa = np.zeros((3, 3))
a = np.r_[a, np.ones((1, 3))] # 4x3
a = np.r_[np.ones((1, 3)), a] # 5x3
a = np.c_[np.ones((5, 1)), a] # 5x4(左添加一列)
a = np.c_[a, np.ones((5, 1))] # 5x5(右添加一列,假设这是预期操作)print(a)
方法2:
a = np.full((5,5),1)
a[1:4,1:4] = 0
a
方法3:
a = np.array([[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1]])
a.shape = 5,5
a
方法4:
-
第一行和最后一行:直接使用
b[0, :]
和b[-1, :]
选中整行。 -
中间行的首尾列:使用
b[1:-1, 0]
和b[1:-1, -1]
选中第1到倒数第二行(避免重复操作首尾行)的第一列和最后一列。 -
避免覆盖中间区域:原中间3x3区域已被设为0,四周操作不会影响它。
a = range(25)
b = np.array(a)
b.shape = 5,5
b[1:4,1:4] = 0# 将四周替换为1
b[0, :] = 1 # 第一行
b[-1, :] = 1 # 最后一行
b[1:-1, 0] = 1 # 中间行的第一列
b[1:-1, -1] = 1 # 中间行的最后一列
b
方法5:
import numpy as np
a = np.zeros((5,5))
a[[0,4],:] = 1
a[:,[0,4]] = 1
方法6:
a = range(25)
b = np.array(a)
b.shape = 5,5
b[0:5,0:5] = 1
b[1:4,1:4] = 0
b