gpt4 book ai didi

python - Python\Numpy 中的数组行乘法循环

转载 作者:行者123 更新时间:2023-12-01 05:48:07 26 4
gpt4 key购买 nike

我试图将数组 A 的每一行乘以另一个数组 (B) 中的每一行,以获得 len(A) 个与前两个数组具有相同行数和列数的数组。

有什么帮助吗?

pseudo-code
from numpy import *
import numpy as np

def multipar():
A = array( [ (0.1,0.5,0.2,0.2), (0.2,0.5,0.1,0.2), (0.7,0.1,0.1,0.1) ] )
B = array( [ (1,2,3,4), (2,3,4,5), (3,4,5,6) ] )
for i in len(A):
average = A[i]*B
print average

multipar()

我想要每个结果新数组

Array C
(0.1,0.5,0.2,0.2) * (1,2,3,4);
(0.1,0.5,0.2,0.2) * (2,3,4,5);
(...)
Array D
(0.2,0.5,0.1,0.2) * (1,2,3,4);
(...)

最佳答案

你可以用更高的维度做一些有趣的事情。将 AB 延伸到三维,然后将其与未延伸的维度相乘。例如:

A = array( [ (0.1,0.5,0.2,0.2), (0.2,0.5,0.1,0.2), (0.7,0.1,0.1,0.1) ] )
B = array( [ (1,2,3,4), (2,3,4,5), (3,4,5,6) ] )

tiled = tile (B, (3,1,1)).swapaxes (0,1)
all_results = A*tiled

现在您的所有结果数组都在 all_results 中;您可以使用 all_results[0]all_results[1] 等轻松获取它们

编辑:回应最新的问题编辑:如果您确实需要单独的结果数组,那么还有两个选项:

  • C、D、E = all_results
  • 将我的第一个建议中的最后两条语句替换为:

    C = B * A[0]

    D = B * A[1]

    E = B * A[2]

如果您确实需要单独的数组来存储结果,并且需要更多的行以便需要循环,那么您可以执行类似的操作(感谢@Jaime 的广播符号)

all_results = A[:, None, :] * B[None, :, :]
for i, res in enumerate (all_results):
locals () ['result%d'%i] = res

现在,乘以第一行的结果位于名为 res1 的变量中,第二行位于 res2 中,依此类推。

关于python - Python\Numpy 中的数组行乘法循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15418762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com