使⽤ NumPy 最为⽅便的是当需要对数组元素进⾏运算时,不⽤编写循环代码遍历每个元素,所有的运算都会⾃动 的⽮量化(使⽤⾼效的、提前编译的底层代码来对数据序列进⾏数学操作)。简单的说就是,NumPy 中的数学运 算和数学函数会⾃动作⽤于数组中的每个成员。
数组中的每一个元素都和标量运算
array35 = np.arange(1, 10)
print(array35 + 10)
print(array35 * 10)
[11 12 13 14 15 16 17 18 19]
[10 20 30 40 50 60 70 80 90]
形状相同的运算,每一个元素对应的运算
array37 = np.array([[4, 5, 6], [7, 8, 9]])
array38 = np.array([[1, 2, 3], [3, 2, 1]])
# 求次方
print(array37 ** array38)
print(np.power(array37, array38))
[[ 4 25 216] [343 64 9]]
[[ 4 25 216] [343 64 9]]
不同形状的二维数组进行运算,代码如下:
array39 = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
array40 = np.array([1, 2, 3])
array39 + array40
array([[1, 2, 3],
[2, 3, 4],
[3, 4, 5],
[4, 5, 6]])
array41 = np.array([[1], [2], [3], [4]])
array39 + array41
array([[1, 1, 1],
[3, 3, 3],
[5, 5, 5],
[7, 7, 7]])
从上面可以看出不同形状的二维数组也可以进行运算,但是也不是全都能运算,需要满足如下任一条件:
通过广播机制能使两个数组形状一致。所谓后缘维度是指用shape属性查出来的最后一个元素(从后往前数)