2012-05-21 20 views
7

Mam dwuwymiarową tablicę numpy.Numpy Array sumujący z wagami

Każdy wiersz składa się z trzech elementów i jest liczbą całkowitą 0-3. Jest to 6-bitowa liczba całkowita, przy czym każda komórka reprezentuje dwa bity w kolejności.

Próbuję przekształcić je w pełną liczbę całkowitą.

E.g.

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

Np. Próbuję zsumować każdy wiersz, ale według pewnego wektora masy [16,4,1].

Jaki jest najbardziej elegancki sposób na zrobienie tego? Myślę, że muszę zrobić coś w rodzaju dot, po którym następuje suma, ale nie jestem w 100% pewna, gdzie umieścić kropkę.

+1

użyj metody numpy 'dot()' –

Odpowiedz

12

Pochylenie produktu kropek jest poprawne i obejmuje sumę, której potrzebujesz. Aby uzyskać sumę produktów elementów tablicy docelowej i zestawu odważników:

>>> 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]) 
Powiązane problemy