Numpy常用操作
以下是关于numpy数组生成、计算、索引、统计、保存的常用api备忘。
数组生成:
-
np.arange(0,10)
生成[0,10)的顺序矩阵 -
np.zeros((3,2))
生成尺寸为(3,2)的全0矩阵 -
np.random.rand(4,3)
# 0~1的随机小数矩阵,4行3列 -
np.random.randint(0, 10, size=5)
# 随机数(5个):第1个起始;第2个结束(不包括);第3个随机数个数 -
np.random.randint(0, 10, size=(2, 5))
# 随机数组/矩阵(5个):第1个起始;第2个结束(不包括);第3个随机数个数(行,列) -
np.random.seed(100)
# 随机数种子,种子不变,每次生成的随机数也不变 -
或者使用
rs = np.random.RandomState(100)
设置随机数种子,然后通过rs.rand(4)
等方法来使用,生成四个随机数 -
np.random.random(5)
# 随机数(float型),5个 -
np.random.random((3, 5))
# 随机数组/矩阵(float型),(3行,5列) -
np.random.normal(size=5)
# 正态分布的5个随机数 -
np.random.normal(size=(3, 5))
# 正态分布的5个随机数组
数组变换
np.pad(a,((3,2),(2,3)),'constant',constant_values = (0,0))
在a第0个维度,前面填3个0,后面填2个0;在a第1个维度,前面填2个0,后面填3个0
array([[95, 96],
[97, 98]])
array([[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 95, 96, 0, 0, 0],
[ 0, 0, 97, 98, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0]])
数组选择
np.argwhere(condition)
返回满足条件的索引
数组计算:
np.concatenate(x1,x2,axis=0)
数组拼接- 按元素相乘:
a*b
或np.multiply(a,b)
- 矩阵乘法:
a@b
或者np.dot(a,b)
- 矩阵的张量积:
np.kron(a,b)
data.T
数组转置data.I
矩阵求逆- 矩阵插入一行或一列
np.tile(data, repeat)
矩阵复制, data为要实施复制的矩阵,repeat为各个维度分别重复的次数,例如:
t = np.array([1,2,3])
np.tile(t, [3,1])
Out:
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
数组统计:
a.argmax(axis=0)
求每一行或每一列的最大值的索引np.argsort(R, axis=1)
将array数组进行排序并获取排序后的索引(从小到大)a[:,-3:]
获取数组每行的倒数前三位np.sum( ndarray == 1 )
查询array中1的个数np.mean(t,axis=0)
对列求平均
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0) # axis=0,计算每一列的均值
array([ 2., 3.])
>>> np.mean(a, axis=1) # 计算每一行的均值
array([ 1.5, 3.5])
数组保存:
-
numpy.save("filename.npy",a)
利用这种方法,保存文件的后缀名字一定会被置为.npy,这种格式最好只用
numpy.load("filename")
来读取。 -
numpy.savetxt("filename.txt",a)
b = numpy.loadtxt("filename.txt")
用于处理一维和二维数组
- 保存目录不存在的话创建目录:
import os
if not os.path.isdir(dir_name):
os.makedirs(dir_name)