在实验楼看到这个Numpy的实验,权当是复习巩固了,感觉还是蛮有意思的,大家有兴趣也可以写一下,实验的链接(非广告哈):
NumPy 百题大冲关
首先是惯例:
import numpy as np
前面的50道题目是比较基础,就简单写写记录一下:
print(np.__version__)
np.zeros(3,3) #零矩阵
np.ones(2,3) #全1矩阵
np.eye(3, dtype=np.int) #3阶单位矩阵
np.fromfunction(lambda i, j: i + j, (3, 3))
np.dot(a, b)
A.T
np.linalg.inv(A)
a.ravel()
np.vstack((a,b))
np.hstack((a,b))
In [22]: a = np.random.randint(1, 10, (3,3))
In [23]: a
Out[23]:
array([[6, 1, 7],
[1, 5, 7],
[6, 9, 9]])
In [24]: np.hsplit(a, 3)
Out[24]:
[array([[6],
[1],
[6]]), array([[1],
[5],
[9]]), array([[7],
[7],
[9]])]
这是分割成了三个列向量,同理,vsplit()就是分割成多个行向量,理解两个的不同就好,注意分割函数的第二个参数一定要跟数组的行(列)有倍数关系,这样才能保证分割
max()函数可以得到数组的最大值,如果我们需要按照行(列)求解最大值,可以传递axis参数指定行或列:
In [31]: np.max(a, axis = 0)
Out[31]: array([4, 8, 8, 7, 5, 9])
In [32]: np.max(a, axis = 1)
Out[32]: array([8, 9, 8])
在Python中很多地方都会用到axis,其中axis为1表示按照行,为0表示按照列,求最小值同理,有的时候会用到索引,我们需要最大值或者最小值的索引值,那么可以使用argmax()函数等,例如:
np.argmax(a, axis = 0)
返回的是每一行的最大值的索引
数理统计
np.median(a, axis=0)
np.mean(a, axis = 0)
np.average(a, axis=0)
np.var(a, axis=1)
np.std(a, axis=0)
上面的计算都是可以选择性保留axis参数的,从而指定计算全部的数据或者计算制定的行列