【发布时间】:2021-01-22 07:54:56
【问题描述】:
好的,所以我想将一个 3D 数组和 1D 数组相乘,然后像下面的示例一样进行求和
A = [Array([[[100, 100, 100],
[100, 100, 100]],
[[100, 100, 100],
[100, 100, 100]]]),
Array([[[200, 200, 200],
[200, 200, 200]],
[[200, 200, 200],
[200, 200, 200]]])]
Weight = [0.25,0.75]
# A[0]*Weight[0]+A[1]*Weight[1]
C = [[[100*0.25 + 200*0.75, 100*0.25 + 200*0.75, 100*0.25 + 200*0.75],
[100*0.25 + 200*0.75, 100*0.25 + 200*0.75, 100*0.25 + 200*0.75]],
[[100*0.25 + 200*0.75, 100*0.25 + 200*0.75, 100*0.25 + 200*0.75],
[100*0.25 + 200*0.75, 100*0.25 + 200*0.75, 100*0.25 + 200*0.75]]]
= [[[175, 175, 175],
[175, 175, 175]],
[[175, 175, 175],
[175, 175, 175]]]
问题是我如何在 python 中做到这一点?我尝试使用np.multiply、np.dot、np.matmul,但它们似乎都没有按我的预期工作。也许我没有正确地做到这一点。顺便说一句,我还希望它能够乘以更大的数组,例如 A 数组,其中包含多个 Array(),而不仅仅是示例中的 2。当然Weight Array 的长度会跟随A Array 的长度。另外,如果可能的话,我也想避免使用for-loop,而只使用numpy 函数。
【问题讨论】:
-
我们可以假设您使用的是 numpy 数组吗?你看过 numpy 广播机制吗? numpy.org/devdocs/user/theory.broadcasting.html
标签: python arrays numpy multidimensional-array