NumPy相对Python更高级和更高效,数组存储在均匀连续的内存块,节约计算资源;矢量化的指针指令和多线程矩阵计算提升计算效率;避免隐氏拷贝,采取就地操作。
基本属性shape,dtype
import numpy as np
np.array()
a = np.array([0,1,2,3])
a
array([0, 1, 2, 3])
b = np.array([[0,1,2],[3,4,5]]) #2-D, 2row x 3col
b
array([[0, 1, 2],
[3, 4, 5]])
np.arange() #开始值、终值和步长
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(1,6,2)
array([1, 3, 5])
np.linspace() #开始值、终值和元素个数
np.ones()
np.zeros()
np.eye()
np.diag()
np.repeat()
np.vstack()
np.hstack()
shape()
reshape()
resize()
T() #转置
dot() #矩阵乘法,两个矩阵的点积
所得到的数组中的每个元素为,第一个矩阵中与该元素行号相同的元素与第二个矩阵与该元素列号相同的元素,两两相乘后再求和。
这句话有点难理解,但是这句话里面没有哪个字是多余的。结合下图理解这句话。
3.dot()函数可以通过numpy库调用,也可以由数组实例对象进行调用。a.dot(b) 与 np.dot(a,b)效果相同。
矩阵积计算不遵循交换律,np.dot(a,b) 和 np.dot(b,a) 得到的结果是不一样的。
Numpy has many built in math functions that can be performed on arrays.
a = np.array([-4, -2, 1, 3, 5])
a.sum()
a.max()
a.min()
a.mean()
a.std()
x1 = np.arange(1,11,2)
x2 = np.linspace(1,9,5)
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))
print(np.remainder(x1,x2))
print(np.mod(x1,x2))
argmax and argmin return the index of the maximum and minimum values in the array.
a.argmax()
a.argmin()
a.argmin()
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.amin(a))
print(np.amin(a,0)) #axis=0, [1,4,7],[2,5,8],[3,6,9] 以列来看
print(np.amin(a,1)) #axis=1, [1,2,3],[4,5,6],[7,8,9] 以行来看
print(np.amax(a))
print(np.amax(a,0))
print(np.amax(a,1))
最大值和最小值只差
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.ptp(a))
print(np.ptp(a,0))
print(np.ptp(a,1))
8
[6 6 6]
[2 2 2]
统计数组的百分位数
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(np.percentile(a,50))
print(np.percentile(a,50,axis=0))
print(np.percentile(a,50,axis=1))
5.0
[4. 5. 6.]
[2. 5. 8.]
统计数组中的中位数,平均数
#求中位数
print(np.median(a))
print(np.median(a,axis=0))
print(np.median(a,axis=1))
#求平均数
print(np.mean(a))
print(np.mean(a,axis=0))
print(np.mean(a,axis=1))
5.0
[4. 5. 6.]
[2. 5. 8.]
5.0
[4. 5. 6.]
[2. 5. 8.]
统计数组中的加权平均值
a = np.array([1,2,3,4])
wts = np.array([1,2,3,4])
print(np.average(a))
print(np.average(a, weights=wts)
#(1*1+2*2+3*3+4*4)/(1+2+3+4)=3.0
2.5
3.0
统计数组中的标准差,方差
a = np.array([1,2,3,4])
print(np.std(a))
print(np.var(a))
1.118033988749895
1.25
排序
a = np.array([[4,3,2],[2,4,1]])
print(np.sort(a)) #axis default = -1,沿着数组的最后一个轴进行排序
print(np.sort(a,axis=None)) #平铺排序
print(np.sort(a, axis=0)) #纵轴排序
print(np.sort(a,axis=1)) #横轴排序
[[2 3 4]
[1 2 4]]
[1 2 2 3 4 4]
[[2 3 1]
[4 4 2]]
[[2 3 4]
[1 2 4]]