【问题标题】:Selecting list values based on matrix binary values?根据矩阵二进制值选择列表值?
【发布时间】:2020-05-26 05:45:48
【问题描述】:

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


    【解决方案1】:

    这是一种捷径,虽然乘法可能很昂贵。

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

    更好的是

    np.dot(m1, list)
    

    【讨论】:

    • 甚至np.dot(m1, list)
    【解决方案2】:

    没有numpy

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2013-12-04
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多