2012-05-21 39 views
7

Ho una matrice numpy bidimensionale.Numpy Array somma con pesi

Ogni riga è composta da tre elementi ed è un numero intero 0-3. Questo rappresenta un intero a 6 bit, con ogni cella che rappresenta due bit, in ordine.

Sto provando a trasformarli nell'intero intero.

E.g.

for i in range(len(myarray)): 
    myarray[i] = myarray[i][0] * 16 + myarray[i][1] * 4 + myarray[i][2] 

E.g. Sto cercando di sommare ogni riga ma secondo un certo vettore di peso di [16,4,1].

Qual è il modo più elegante per farlo? Sto pensando di dover fare una sorta di prodotto punto seguito da una somma, ma non sono sicuro al 100% dove fare il punto.

+1

utilizzare il metodo numpy 'punto()' –

risposta

12

L'inclinazione del prodotto del punto è corretta e include la somma necessaria. Quindi, per ottenere la somma dei prodotti degli elementi di un array di destinazione e di un set di pesi:

>>> a = np.array([[0,1,2],[2,2,3]]) 
>>> a 
array([[0, 1, 2], 
     [2, 2, 3]]) 
>>> weights = np.array([16,4,2]) 
>>> np.dot(a,weights) 
array([ 8, 46])