1
我試圖將數組A的每一行乘以另一個數組(B)中所有行的每一行以便獲得len(A)具有相同行數的數組和列作爲前兩個數組。Python Numpy中的數組行乘法循環
任何幫助?
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);
(...)
感謝您的幫助。分開放置結果數組會更好。由於我的真實數據比這個例子有更多的行,你將如何實現你的最後一個循環選項?它與我的pscode有什麼不同?最好的問候 – Pedro9 2013-03-14 20:34:18
@lxop你不需要平鋪,而是使用廣播!如果'A.shape =(r,t)'和'B.shape =(s,t)',那麼'C = A [:,None,:] * B [None,:,]' '(r,s,t)'和'C [0]'將是'A'的第一行與'B'的乘積。 'A [:,無,:]'等價於'A.reshape(r,1,t)'和'B [None,:,]'與B.reshape(1,s,t )'。廣播重複使用數據,而平鋪複製數據,所以前者更快,使用內存少於後者。 – Jaime 2013-03-14 21:05:05
@佳美優點,謝謝。 – lxop 2013-03-15 01:04:54