【发布时间】:2017-06-26 22:38:32
【问题描述】:
我有两个数组列表
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 的 tensordot 的解决方案,但我做的不对。我该如何进行?
【问题讨论】:
-
[splocations[i] * eviddisp[i] for i in range(2)]? -
@Divakar:那是非常低效的。我正在寻找一个 numpy 解决方案。
-
a[:2]*b与a和b分别为array(splocations) and array(eviddisp)? -
@Divakar:这会产生一个 3x2 的矩阵,而不是请求的张量。
-
然后,试试
a[:,None]*b。
标签: python arrays numpy matrix