如何将第 ith 行的 numpy 数组的各个元素与第 ith 行的另一个 numpy 数组的元素相乘?
How to multiply individual elements of numpy array of row ith with element of another numpy array of row ith?
如何将第 i 行的 numpy 数组的单个元素与第 i 行的另一个 numpy 数组的元素相乘?
库存示例是我想将大小为 [280,2] 的 numpy 数组(包含商品(其中 280 个)以美元、欧元计价)与大小为 [280,3] 的 numpy 数组相乘(3间店屋的存货(代表栏目)。
我相信我使用 for 循环计算没有问题,但我正在尝试学习广播和重塑技术。所以我希望你能帮助我指出正确的方向(或方法)
编辑:示例
Array A
[[1.50 1.80]
[3 8 ]]
Array B
[[5 10 20]
[10 20 30]]
我要求的结果是
[[7.5 9 11.5 18 30 36]
30 80 60 160 90 240]]
谢谢
描述有点模糊,示例也是如此:
In [264]: A=np.array([[1.5,1.8],[3,8]]); B=np.array([[5,10,20],[10,20,30]])
In [265]: A.shape
Out[265]: (2, 2)
In [266]: B.shape
Out[266]: (2, 3)
看起来你正在尝试做一个版本的外部产品,可以通过广播来完成。
让我们尝试一种组合:
In [267]: A[:,:,None]*B[:,None,:]
Out[267]:
array([[[ 7.5, 15. , 30. ],
[ 9. , 18. , 36. ]],
[[ 30. , 60. , 90. ],
[ 80. , 160. , 240. ]]])
数字正确,但顺序不正确。我们再试一次:
In [268]: A[:,None,:]*B[:,:,None]
Out[268]:
array([[[ 7.5, 9. ],
[ 15. , 18. ],
[ 30. , 36. ]],
[[ 30. , 80. ],
[ 60. , 160. ],
[ 90. , 240. ]]])
更好 - 现在只需重塑:
In [269]: _.reshape(2,6)
Out[269]:
array([[ 7.5, 9. , 15. , 18. , 30. , 36. ],
[ 30. , 80. , 60. , 160. , 90. , 240. ]])
_268
是 _267
、.transpose(0,2,1)
.
的部分转置
如何将第 i 行的 numpy 数组的单个元素与第 i 行的另一个 numpy 数组的元素相乘?
库存示例是我想将大小为 [280,2] 的 numpy 数组(包含商品(其中 280 个)以美元、欧元计价)与大小为 [280,3] 的 numpy 数组相乘(3间店屋的存货(代表栏目)。
我相信我使用 for 循环计算没有问题,但我正在尝试学习广播和重塑技术。所以我希望你能帮助我指出正确的方向(或方法)
编辑:示例
Array A
[[1.50 1.80]
[3 8 ]]
Array B
[[5 10 20]
[10 20 30]]
我要求的结果是
[[7.5 9 11.5 18 30 36]
30 80 60 160 90 240]]
谢谢
描述有点模糊,示例也是如此:
In [264]: A=np.array([[1.5,1.8],[3,8]]); B=np.array([[5,10,20],[10,20,30]])
In [265]: A.shape
Out[265]: (2, 2)
In [266]: B.shape
Out[266]: (2, 3)
看起来你正在尝试做一个版本的外部产品,可以通过广播来完成。
让我们尝试一种组合:
In [267]: A[:,:,None]*B[:,None,:]
Out[267]:
array([[[ 7.5, 15. , 30. ],
[ 9. , 18. , 36. ]],
[[ 30. , 60. , 90. ],
[ 80. , 160. , 240. ]]])
数字正确,但顺序不正确。我们再试一次:
In [268]: A[:,None,:]*B[:,:,None]
Out[268]:
array([[[ 7.5, 9. ],
[ 15. , 18. ],
[ 30. , 36. ]],
[[ 30. , 80. ],
[ 60. , 160. ],
[ 90. , 240. ]]])
更好 - 现在只需重塑:
In [269]: _.reshape(2,6)
Out[269]:
array([[ 7.5, 9. , 15. , 18. , 30. , 36. ],
[ 30. , 80. , 60. , 160. , 90. , 240. ]])
_268
是 _267
、.transpose(0,2,1)
.