根据矩阵二进制值选择列表值?

Selecting list values based on matrix binary values?

我正在尝试将二进制矩阵的元素映射到整数列表。它需要遍历矩阵的每一行,如果值为 1,则从相应列表中选择一个项目,如果值为 0,则不选择任何项目。最终目标是拥有一个向量,其中包含每行对应值的总和。 例如:

listOfNums: [1,2,3,4,5]

m1= [[1,0,1,1,1] 
[0,0,0,0,1] 
[1,0,0,0,1]]

>>>[13,5,6]

这是我到目前为止尝试过的方法,但是我一直收到索引错误

  def corrspondingVal(self, x):
    nums = [1,2,3,4,5,6,7,8,9,10]
    return [self.nums[i] for i in range(x) if x[i]] 

  def sumPerRow(self):
    v = np.apply_along_axis(self.correspondingVals(self.matrix1), axis=1, arr=self.matrix1)
    return v

(self.matrix1 是二进制值的 (10,5) 矩阵)

这是一种简短的方法,尽管乘法可能很昂贵。

np.sum(m1 * list, axis=1)

更好的是

np.dot(m1, list)

没有numpy:

listOfSums = [ sum(num for idx,num in enumerate(listOfNums) if row[idx]) for row in m1 ]