我有一個像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