更好地替代'numpy.moveaxis',用于跨错误定向的阵列进行广播

2024-05-29 11:05:27 发布

您现在位置:Python中文网/ 问答频道 /正文

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)操作,还有更好的选择吗


Tags: innumpy顺序np方式情况数组array

热门问题