实验楼 - Python Numpy 100题实验(一)

题目链接

在实验楼看到这个Numpy的实验,权当是复习巩固了,感觉还是蛮有意思的,大家有兴趣也可以写一下,实验的链接(非广告哈):
NumPy 百题大冲关

基础50题

首先是惯例:

import numpy as np

前面的50道题目是比较基础,就简单写写记录一下:

  • 获取Numpy的版本号
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参数的,从而指定计算全部的数据或者计算制定的行列

猜你喜欢

转载自blog.csdn.net/sinat_34328764/article/details/82868236