如何将两个列表乘以矩阵到张量?

时间:2017-06-26 12:57:49

标签: python arrays numpy matrix

我有两个数组列表

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的解决方案,但我没有做对。我该怎么办?

1 个答案:

答案 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]]])