NumPy是Python中非常重要的第三方库。提供的数据结构更高级与高效。
NumPy有两个重要对象:ndarray和ufunc.
ndarray对象
多维数组。
- 创建数组
import numpy as np
a = np.array([1,2,3])#创建数组
b = np.array([[1,2],[3,4],[5,6]])
b[1,1]=10#修改数值
print(a.shape)#数组大小
print(b.dtype)#元素属性
- 结构数组
persontype = np.dtype({
'names': ['name', 'age' , 'Chinese','English'],
'formats':['S32','i', 'i','f'] })
peoples = np.array([("LL",12,77,77.5),("HH",13,78,67.5)], dtype=persontype)
ages=people[:]['age']
print(np.mean(ages))
- ufunk运算
对数组每个元素进行函数操作。计算速度很快,用c语言实现。 - 连续数组的创建
x1 = np.arange(1,11,2) #(初始,终值(不包括),步长)
x2 = np.linspace(1,9,5) #(初始,终值(包括),元素个数)
结果都为[1 3 5 7 9]
- 算数运算
print(np.add(x1,x2))
print(np.subtract(x1,x2))
print(np.multiply(x1,x2))
print(np.divide(x1,x2))
print(np.power(x1,x2)) #求n次方
print(np.remainder(x1,x2)) #取余数 or np.mod(x1,x2)
- 统计函数
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.amin(a)) #全部元素最小值
print(np.amin(a,0)) #纵向最小值 [1 2 3]
print(np.amin(a,1)) #横向最小值[1 4 7]
print(np.amax(a)) # 全部元素最大值
print(np.amax(a,0)) #纵向最大值 [7 8 9]
print(np.amax(a,1)) #横向最大值 [3 6 9]
print(np.ptp(a)) #最大值与最小值之差 8
print(np.ptp(a,0)) #纵向最大值与最小值之差 [6 6 6]
print(np.ptp(a,1)) #横向最大值与最小值之差[2 2 2]
print(np.percentile(a,50)) #50取中位数,0取最小值,100取最大值
print(np.percentile(a,50,0)) #纵向中位数
print(np.percentile(a,50,1)) #横向中位数
print(np.mean(a)) #平均数
print(np.median(a)) #中位数
c= np.array([1,2,3,4])
wts=np.array([1,2,3,4])
print(np.average(c)) #2.5
print(np.average(c,weights=wts)) #加权平均3.0
print(np.std(c)) #标准差是方差的算数平方根
print(np.var(c)) #方差(每个数值与平均值之差的平方求和的平均值)
注:纵向与横向是为了记忆自己规定的
默认创建的二维数组形式:
1 2 3
4 5 6
7 8 9
NumPy排序
d= np.array([[2,4,5],[3,2,1]])
print(np.sort(d)) #axis默认为1 [[2 4 5] [1 2 3]]
print(np.sort(d,0))# [[2 2 1] [3 4 5]]
print(np.sort(d,1))