我在numpy中有两个数组A和B。 A保存笛卡尔坐标,每一行都是3D空间中的一个点,形状为(r,3)。B的形状为(r,n),保存整数。
我想要做的是将B中的每个元素与A中的每一行相乘,从而得到形状为(r,n,3)的结果数组。例如:
我想要做的是将B中的每个元素与A中的每一行相乘,从而得到形状为(r,n,3)的结果数组。例如:
# r = 3
A = np.array([1,1,1, 2,2,2, 3,3,3]).reshape(3,3)
# n = 2
B = np.array([10, 20, 30, 40, 50, 60]).reshape(3,2)
# Result with shape (3, 2, 3):
# [[[10,10,10], [20,20,20]],
# [[60,60,60], [80,80,80]]
# [[150,150,150], [180,180,180]]]
我相信可以使用np.einsum
来完成这个任务,但是我已经尝试了很长时间,却无法使其正常工作。
np.einsum('ij,ik->ikj', A, B)
来进行einsum
。 - Alex Riley