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