首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python\Numpy中的数组行乘法循环

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

Stack Overflow用户
提问于 2013-03-15 03:43:28
回答 1查看 1.5K关注 0票数 1

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

有什么帮助吗?

代码语言:javascript
复制
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() 

我希望每个生成的新数组

代码语言:javascript
复制
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);
(...)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-15 03:57:13

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

代码语言:javascript
复制
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[0]all_results[1]等轻松获取all_results中的所有结果数组

EDIT:回答最新的问题edit:如果你真的需要单独的结果数组,那么还有两个选项:

对我第一个建议中的最后两个语句进行

  • C, D, E = all_results
  • replace:

C=B*A

D=B* A1

E=B* A2

如果您确实需要为结果使用单独的数组,并且需要更多的行,因此需要使用循环,那么您可以这样做(感谢@Jaime的广播符号)。

代码语言:javascript
复制
all_results = A[:, None, :] * B[None, :, :]
for i, res in enumerate (all_results):
    locals () ['result%d'%i] = res

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15418762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档