我有一个形状为(N, 3)的A数组和一个形状为(M, 3)的数组B,其中M < N。我想创建一个形状为(M, N, 3)的数组形状C,其中形状(3 ,N)的C[i, :, :]是A中所有点与B的ith点之间的差:
(N, 3)
A
(M, 3)
M < N
(M, N, 3)
C
(3 ,N)
C[i, :, :]
B
ith
C[i, :, :] == A - B[i]
奥尔更明确地说:
C[i, :, :] == A[:, :] - B[i, :]
使用向量化的Numpy操作轻松实现它而不必依赖循环的最佳方法是什么?
Numpy
q3aa05251#
你可以使用numpy's broadcasting:
C = (A[None] - B[:, None])
3df52oht2#
您可以广播:
C = A[None] - B[:, None]
形状:
# A[None].shape (1, N, 3) # B[:,None].shape (M, 1, 3) # C.shape (M, N, 3)
2条答案
按热度按时间q3aa05251#
你可以使用numpy's broadcasting:
3df52oht2#
您可以广播:
形状: