强基初中数学&学Python——第229课 数字和数学第三方模块NumPy:菜鸟入门(5)


数组的基本操作  本节介绍加法、减法、乘法、除法等  一旦创建了数组,就可以开始使用它们。例如,假设您创建了两个数组,一个称为“data”,一个名为“ones”:  可用加号把它们加起来。

>>> data = np.array([1, 2])
>>> ones = np.ones(2, dtype=int)
>>> data + ones
array([2, 3])

  除了加法,当然也可以做其他运算!

>>> data - ones
array([0, 1])
>>> data * data
array([1, 4])
>>> data / data
array([1., 1.])

  NumPy的基本操作很简单。如果要求数组中元素的和,可以使用sum()。这适用于1D数组、2D数组和更高维度的数组。

>>> a = np.array([1, 2, 3, 4])

>>> a.sum()
10

  如果想把2D数组的每行加起来,就要输入axis参数。  例如数组:

>>> b = np.array([[1, 1], [2, 2]])

  可以通过axis参数把每行加起来:

>>> b.sum(axis=0)
array([3, 3])

  也可以每列加起来:

>>> b.sum(axis=1)
array([2, 4])

  要了解有关基本操作的信息,请打开:https://numpy.org/doc/stable/user/quickstart.html#quickstart-basic-operations。
广播
  有时,可能希望在数组和单个数字之间执行操作(也称为向量和标量之间的操作),或者在两个不同大小的数组之间执行操作。例如,数组(我们称之为“数据”)可能包含以英里为单位的距离信息,但您希望将这些信息转换为千米。您可以通过以下方式执行此操作:

>>> data = np.array([1.0, 2.0])
>>> data * 1.6
array([1.6, 3.2])

  NumPy自动将乘法应用到每个单元格中。这个概念叫做广播。广播是一种允许NumPy对不同形状的数组执行操作的机制。数组的维数必须兼容,例如,当两个数组的维数相等或其中一个为1时。如果维数不兼容,则会抛出ValueError。  想了解有关广播的更多信息,请打开https://numpy.org/doc/stable/user/basics.broadcasting.html#basics-broadcasting。
更多有用的数组操作  本节包括最大值、最小值、总和、平均值、乘积、标准偏差等  NumPy还执行聚合功能。除了min、max和sum之外,您还可以很容易地运行mean来获得平均值,prod来获得元素相乘的结果,std来获得标准偏差,等等。

>>> data.max()
2.0
>>> data.min()
1.0
>>> data.sum()
3.0

  例如下面的数组“a”:

>>> a = np.array([[0.45053314, 0.17296777, 0.34376245, 0.5510652],
...               [0.54627315, 0.05093587, 0.40067661, 0.55645993],
...               [0.12697628, 0.82485143, 0.26590556, 0.56917101]])

  想要沿着行或列聚合是非常常见的。默认情况下,每个NumPy聚合函数都将返回整个数组的聚合。要查找数组中元素的总和或最小值,则运行:

>>> a.sum()
4.8595784

>>> a.min()
0.05093587

  可以指定要在哪个轴上计算聚合函数。例如,通过指定axis=0,可以找到每列中的最小值。

>>> a.min(axis=0)
array([0.12697628, 0.05093587, 0.26590556, 0.5510652 ])

  上面列出的四个值对应于数组中的列数。对于四列数组,将得到四个值作为结果。  阅读有关数组方法的更多信息,请打开:https://numpy.org/doc/stable/reference/arrays.ndarray.html#array-ndarray-methods。