我有两个数组列表
splocations = [array([1,2,3]),array([4,5,6]),array([7,8,9])]
eviddisp = [array([10,11,12]), array([13,14,15])]
我希望彼此相乘,以便我将每个列表元素(它是一个数组)与每个其他列表元素相乘。在这里,我将得到一个3x2矩阵,其中每个元素都是一个向量。所以矩阵元素[0,0]将是
array([10, 22, 36]) = array([1,2,3]) * array([10,11,12])
因此,这个矩阵实际上是3x2x3形状的张量。我怎样才能得到这个张量/矩阵?
我知道我需要以某种方式使用array(splocations)
和array(eviddisp)
。我意识到,我正在寻找一个具有numpy& tenordot的解决方案,但我没有做对。我该怎么办?
答案 0 :(得分:1)
我认为这是你想要的,考虑自动广播:
from numpy import array
splocations = [array([1,2,3]),array([4,5,6]),array([7,8,9])]
eviddisp = [array([10,11,12]), array([13,14,15])]
splocations = array(splocations)
viddisp = array(eviddisp)
result = splocations[:, None, :]*eviddisp
result
array([[[ 10, 22, 36],
[ 13, 28, 45]],
[[ 40, 55, 72],
[ 52, 70, 90]],
[[ 70, 88, 108],
[ 91, 112, 135]]])