使用 Python 包含在 2 个数组中的向量的元素交叉乘积



我有两个数组,一个包含向量列表(A(,另一个包含向量(B(的二维列表。我希望以特定的方式对每个数组中的向量进行元素交叉乘积。

A 中的拳头向量应由 B 的第一个元素中包含的所有 3 个向量交叉积 (?(。

下面是一个最小示例:

import numpy as np
A = np.random.rand(2,3)
B = np.random.rand(2,3,3)
C = np.random.rand(2,3,3)
C[0,0] = np.cross(A[0],B[0,0])
C[0,1] = np.cross(A[0],B[0,1])
C[0,2] = np.cross(A[0],B[0,2])
C[1,0] = np.cross(A[1],B[1,0])
C[1,1] = np.cross(A[1],B[1,1])
C[1,2] = np.cross(A[1],B[1,2])

我想避免使用for循环来提高效率。

我通过使用:

C = np.einsum('aj,ijk->ij',A,B)

但我似乎无法对交叉产品做同样的事情。

只是广播问题:

>>> D = np.cross(A[:, None, :], B)
>>> np.all(D==C)
True

最新更新