我有一个像np.arrays的名单:多个阵列tensordot
l = [array([0.2,0.3,0.5]),array([0.7,0.3])]
我需要得到外部产品:
array([[0.14, 0.06],
[0.21, 0.09],
[0.35, 0.15]])
一般方式
:
array([[l[0][0] * l[1][0], l[0][0] * l[1][1]],
[l[0][1] * l[1][0], l[0][1] * l[1][1]],
[l[0][2] * l[1][0], l[0][2] * l[1][1]]])
但是对于任何长度的l(> = 2),所以当len(l)== 4时,我会得到4维数组。
我目前的做法是使用tensordot for循环:
product = np.tensordot(l[0], l[1], 0)
for i in range(2, len(l)):
product = np.tensordot(product, l[i], 0)
但我已经习惯了,在Python代码看起来更好。有谁想法如何做更好更快的解决方案?
的动机是,我需要逐元素的总和乘以两个数组:
result = np.sum(arr * product)
其中arr.shape == product.shape。也许你,聪明的人,也可以改善它。
如果您要立即命名lambda函数,为什么要使它成为lambda?唯一真正的优势是内联它的能力。 – DSM 2013-04-26 21:15:38
是的 - 出于某种原因,我开始写作思考一个班轮将是太长,不可见。编辑。 – YXD 2013-04-26 21:19:45
我没有这样想过,谢谢。我可能会用这个,它绝对漂亮,速度一样。 – Artimi 2013-04-26 21:27:47