2012-05-21 21 views
7

Tengo una matriz numpy bidimensional.Numpy Array sumando pesos

Cada fila tiene tres elementos y es un entero 0-3. Esto representa un entero de 6 bits, con cada celda representando dos bits, en orden.

Estoy tratando de transformarlos en el entero completo.

E.g.

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

E.g. Intento sumar cada fila pero de acuerdo con un cierto vector de peso de [16,4,1].

¿Cuál es la forma más elegante de hacer esto? Estoy pensando que tengo que hacer algún tipo de producto de punto seguido de una suma, pero no estoy 100% seguro de dónde hacer el punto.

+1

utiliza el numpy 'dot()' método –

Respuesta

12

La inclinación del producto punto es correcta, y eso incluye la suma que necesita. Por lo tanto, para obtener la suma de los productos de los elementos de una matriz de destino y un conjunto de pesos:

>>> 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])