基于矩阵二进制值选择列表值?

问题描述 投票:0回答:2

我正在尝试将二进制矩阵的元素映射到整数列表。它需要遍历矩阵的每一行,如果值为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)矩阵)

python numpy oop matrix genetic-algorithm
2个回答
3
投票

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

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

更好的是

np.dot(m1, list)

0
投票

没有numpy

listOfSums = [ sum(num for idx,num in enumerate(listOfNums) if row[idx]) for row in m1 ]
© www.soinside.com 2019 - 2024. All rights reserved.