数组间的运算(加减乘除幂等),需满足numpy的广播机制;
(1)两个数组形状完全相同,即两个数组维度均为n*m
(2)其中一个数组维度为n*m,另一个数组维度为n*1或1*m
(更高维数组同理)
import numpy as np
n1 = np.array([1, 2]) # 维度为2*1的数组
n2 = np.array([3, 4]) # 维度为2*1的数组
n3 = np.array([1], [2]) # 维度为1*2的数组
n4 = np.array([[1, 2], [3, 4]]) # 维度为2*2的数组
n5 = np.array([1, 2, 3]) # 维度为3*1的数组
n6 = np.array([1], [2], [3]) # 维度为1*3的数组
n7 = np.array([[1, 2, 3], [4, 5, 6]]) # 维度为3*2的数组
n8 = np.array([[1, 2], [3,4], [5,6]]) # 维度为2*3的数组
这些数组之间是否符合广播机制如下表所示:
n1 2*1 | n2 2*1 | n3 1*2 | n4 2*2 | n5 3*1 | n6 1*3 | n7 3*2 | n8 2*3 | |
n1 2*1 | √ | √ | × | √ | × | × | × | √ |
n2 2*1 | √ | √ | × | √ | × | × | × | √ |
n3 1*2 | × | × | √ | √ | × | × | √ | × |
n4 2*2 | √ | √ | √ | √ | × | × | × | × |
n5 3*1 | × | × | × | × | √ | × | √ | × |
n6 1*3 | × | × | × | × | × | √ | × | √ |
n7 3*2 | × | × | √ | × | √ | × | √ | × |
n8 2*3 | √ | √ | × | × | × | √ | × | √ |