import numpy as np
(1)创建矩阵:
a=np.array([
[1,2,3],
[2,3,4],
[4,5,6]],dtype=np.int64)
函数 |
说明 |
np.ones((3,4)) |
全是1的矩阵 |
np.zeros((3,4)) |
全是0的矩阵 |
np.empty((3,4)) |
全部元素都几乎接近于0的矩阵 |
np.random.random((3,4)) |
3*4的随机数矩阵(取值介于0~1) |
np.arange(0,12,1).reshape((3,4)) |
左闭右开,步长为2 生成列表,reshape()改变行列形状为3*4 |
np.linspace(1,10,5) |
左闭右开,5段递增得到列表 |
a.dtype |
元素类型,int32、int64、float32、float64等等 |
(2)矩阵形状
函数 |
说明 |
a.ndim |
返回是几维数组 |
a.size |
返回元素个数 |
a.shape |
返回行数、列数(m,n) |
(3)矩阵运算
运算 |
函数 |
加减乘方 |
c-e,c+e,c**2 |
三角函数 |
np.sin(a) |
转置 |
np.transpose(A)或A.T |
逐个相乘 |
c=a*b |
矩阵相乘 |
c_dot=np.dot(a,b) |
求和 |
np.sum(a) |
求最值 |
np.min(g)、np.max(g,axis=1) ,其中axis=0:每一列内部求和 、1:每一行内部求和 |
提取元素 |
A[2,:] 、A[2,1] 、A[1,1:3]) |
输出索引 |
np.argmin(A) 、np.argmax(A) |
均值中位数 |
np.mean(A)、np.median(A) |
累加累差 |
np.cumsum(A)、np.diff(A) |
逐行升序排序 |
np.sort(A) |
print(c<18) |
判断哪个元素小于18 、大等于18 |
print(np.clip(A,5,9)) |
>9的数变成9,<5的数变成5,中间的数不变 |
A.flatten() |
将矩阵A压扁成只有一行,A.flat表示A.flatten()产生的迭代器用于for循环等 |
A.flatten()
for item in A.flat:
print(item)
(4)矩阵合并与分割
以下函数都可以实现同时多矩阵合并,假设A矩阵为3*4
函数 |
说明 |
np.array([1,1,1]) |
输出shape为(3,)认为只有一个维度 |
np.array([1,1,1])[:,np.newaxis] |
在列方向上添加一个维度,shape为(3,1)或者直接用reshape((3,1)) |
np.vstack((A,B)) |
竖直方向合并 |
np.hstack((A,B)) |
水平方向合并 |
np.concatenate((A,B),axis=0) |
axis=0竖直方向排列合并,axis=1水平方向合并 |
函数 |
说明 |
np.split(A,3,axis=0)或np.vsplit(A,3) |
竖直方向分割 |
np.split(A,2,axis=1) 或np.hsplit(A,2) |
水平方向分割 |
np.array_split(A,3,axis=1) |
3*4的矩阵水平方向不均等分割 为2 1 1 |