数组之所以重要是因为它允许你进行批量操作而无须任何for循环。Numpy用户称这种特性为 向量化。任何在两个等尺寸数组之间的算术操作都应用了逐元素操作的方式:
import numpy as np
arr = np.array([[1,2,3],[4,5,6]])
arr
array([[1, 2, 3],
[4, 5, 6]])
arr * arr
array([[ 1, 4, 9],
[16, 25, 36]])
arr - arr
array([[0, 0, 0],
[0, 0, 0]])
带有标量计算的算术操作,会把计算参数传递给数组的每一个元素:
1/arr
array([[1. , 0.5 , 0.33333333],
[0.25 , 0.2 , 0.16666667]])
arr ** 0.5
array([[1. , 1.41421356, 1.73205081],
[2. , 2.23606798, 2.44948974]])
同尺寸数组之间的比较,会产生一个布尔值数组:
arr2 = np.array([[0.,4.,1.],[7.,2.,12.]])
arr2
array([[ 0., 4., 1.],
[ 7., 2., 12.]])
arr2 > arr
array([[False, True, False],
[ True, False, True]])
不同尺寸的数组间的操作,将会用到 广播特性。
广播的规则:如果对于每个结尾维度(即从尾部开始的),轴长度都匹配或者长度都是1,两个二维数组就是可以兼容广播的。之后,广播会在丢失的或长度为1的轴上进行。