Broadcasting in numpy要求两个数组最右边维度的形状兼容。例如:
A (3d array): 15 x 3 x 5
B (2d array): 3 x 5
如果阵列A的维度与阵列B匹配,但顺序不正确,则可以在广播之前简单地重新排列维度:
A (3d array): 3 x 15 x 5
B (2d array): 3 x 5
np.moveaxis(A, -2, 0) (3d array): 15 x 3 x 5
但我想知道,在两个阵列之间没有正确定向的情况下,最好的广播方式是什么。例如:
q = np.array( [ [0,0], [1,1], [2,2], [3,3], [4,4]] )
z = np.array( [ [1,2], [3,4], [5,6]] )
x = np.array( [ z, z+1, z+2, z+3, z+4] )
#x - q #ValueError: operands could not be broadcast together with shapes (5,3,2) (5,2)
difference = np.moveaxis( np.moveaxis( x, -2, 0) - q, -2, 0)
np.all( np.equal( difference, [z, z, z, z, z]))
除了np.moveaxis( np.moveaxis( x, -2, 0) - q, -2, 0)
操作,还有更好的选择吗
目前没有回答
相关问题 更多 >
编程相关推荐