简体   繁体   中英

Numpy Array summing with weights

I have a two dimensional numpy array.

Each row is three elements long and is an integer 0-3. This represents a 6 bit integer, with each cell representing two bits, in order.

I'm trying to transform them into the full integer.

Eg

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

Eg I'm trying to sum each row but according to a certain weight vector of [16,4,1].

What is the most elegant way to do this? I'm thinking I have to do some sort of dot product followed by a sum, but I'm not 100% confident where to do the dot.

The dot product inclination is correct, and that includes the sum you need. So, to get the sum of the products of the elements of a target array and a set of weights:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM