我尝试将数组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);
(...)发布于 2013-03-15 03:57:13
你可以用更高的维度做一些有趣的事情。将A或B扩展到第三个维度,然后将其与未扩展的维度相乘。例如:
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_resultsC=B*A
D=B* A1
E=B* A2
如果您确实需要为结果使用单独的数组,并且需要更多的行,因此需要使用循环,那么您可以这样做(感谢@Jaime的广播符号)。
all_results = A[:, None, :] * B[None, :, :]
for i, res in enumerate (all_results):
locals () ['result%d'%i] = res现在乘以第一行的结果在名为res1的变量中,第二行在res2中,依此类推。
https://stackoverflow.com/questions/15418762
复制相似问题