学习python也有几个月了,总结下numpy库的用法,方便以后查找使用。

numpy库主要作于科学计算,是一个多维数组对象,称为ndarray,是scipy\pandas等库的基础。

1、创建数组:array()函数,括号内可以是列表、元祖等。

import numpy as np
1)ar1 = np.array([1,2,3,4,5])    # list
2) ar2 = np.array((1,2,3,4,5))   # tuple

2特殊数组的创建

1)np.arange()     #类似range(),在给定间隔内返回均匀间隔的值。
例:np.arange(10)
结果: [0 1 2 3 4 5 6 7 8 9 10]
2) np.linspace(start, stop, num=50,enpoint=True,retstep=False,dtype=None)    # 返回在间隔[start,stop]上计算的num个均匀间隔的样本。
# endpoint:如果为真,则停止是最后一个样本。否则,不包括在内。默认值为True。
# retstep:如果为真,返回(样本,步骤),其中步长是样本之间的间距 → 输出为一个包含2个元素的元祖,第一个元素为array,第二个为步长实际值
例1:np.linspace(2,3,num=5)
结果:[2. 2.25 2.5 2.75 3.]
3) np.zeros()/zeros_like()/ones()/ones_like()
np.zeros()  # 返回给定形状的新数组,用零填充;
np.zeros_like(arr)    #返回具有与给定数组arr相同的形状和类型的零数组
np.ones()    # 返回给定形状的新数组,用1填充;
np.ones_like(arr)    ##返回具有与给定数组arr相同的形状和类型的用1填充的数组
4)np.eye()  # 创建一个给定的单位数据

3、常用的属性

ar.ndim   # 数组维度
ar.shape    # 各维度的尺寸
ar.size    # 元素的个数
ar.dtype    # 元素的类型
ar.itemsize     # 每个元素的大小,以字节为单位 ,每个元素占4个字节

4、维度变换

1)arr.reshape(n,m)   # 将arr变为n*m的数组,要保证改变后数组中数据不变
2)np.resize(arr,(n,m) )   # 将arr变为n*m的数组,更改后的数组中的数据可以与原数组中数据不同。如果新数据中可容纳的数据个数少于原数据,则新数据保留原数据中按行列顺序排列的n*m个数据;如果多于,则会继续按原数组中数据顺序进行填充。
arr =  np.arange(10)
例1:arr1 = arr.resize(2,4)
结果:
[[0 1 2 3]
[4 5 6 7]]
例2:arr1 = arr.resize(2,6)
结果:
[[0 1 2 3 4 5]
[6 7 8 90 1]]
3)arr.T  # 对数组arr进行转置

4、数组的复制

1) arr1 = arr     # 直接用赋值的方式进行复制,此时arr1与arr指向内存中相同的地址,所以当arr中的元素发生改变时,arr1中的元素也会一起改变。
2)arr1 = arr.copy()   # 使用copy()方法进行复制,python在内存空间中重新开辟了一块属于arr1的内存,所以此时arr改变时,arr1不会改变。
5、数组类型转换:.astype()
arr.astype(np.dtype)   # dtype可以是int32\float等
6、数组运算
1)求平均值:arr.mean(axis=0/1)    # 如不指定axis则求整体平均数,axis=0为对列求平均数,axis=1为对行求平均数
2)求最小值:arr.min(axis=0/1)
3)求最大值:  arr.max(axis=0/1)
4)求标准差:arr.std(axis=0/1)
5)求方差:arr.var(axis=0/1)
5)求和: arr.sum(axis=0/1)

7、numpy随机数:np.random

1) np.random.normal(size=(n,m))    #生成一个标准正太分布的n*m样本值
2)np.random.rand()    # 生成一个[0,1)之间的随机浮点数或N维浮点数组 —— 均匀分布
a = np.random.rand()    # 生成一个随机浮点数
b = np.random.rand(4)  # 生成形状为4的一维数组
c = np.random.rand(2,3) #生成一个2*3的二维数组,注意这里不是((2,3))
3)np.random.randn():生成一个浮点数或N维浮点数组 —— 正态分布, 其参数与randn用法相同
4)np.random.randint(low, high=None, size=None, dtype='l'):生成一个整数或N维整数数组,若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数,且high必须大于low,dtype参数:只能是int类型 .
np.random.randint(2) : low=2,生成1个[0,2)之间随机整数
np.random.randint(2,size=5):low=2,size=5 ,生成5个[0,2)之间随机整数
np.random.randint(2,6,size=5):low=2,high=6,size=5,生成5个[2,6)之间随机整数

8、数据的输入输出

1)存储
存储数组数据 .npy文件:np.save('path.npy', arr)
存储为文本txt文件:np.savetxt('path.txt', arr,delimiter=' ')
2) 读取
读取数组数据 .npy文件:np.load('path.npy')
读取文本txt文件:np.loadtxt(“path.txt",delimiter=' ')