【问题标题】:Get the row indexes where 1 appears for each column获取每列出现 1 的行索引
【发布时间】:2019-08-26 11:17:47
【问题描述】:

我有一个二进制 numpy 数组,该数组在某些列中包含一个 1 或完全零,即数组的行和是一个二进制向量,如

A = array([[0, 0, 0, 1, 0, 1],
           [0, 0, 0, 0, 0, 0],
           [0, 1, 0, 0, 0, 0],
           [1, 0, 1, 0, 0, 0]])

我想找到每列中出现 1 的行索引。如果每一列都没有,则不需要返回任何索引。

在上述情况下,我希望结果为

[3, 2, 3, 0, 0]

numpy 如果结果不可用,它会逐行迭代

【问题讨论】:

  • A 是您的输入,还是源自您的输入?我无法从你的描述中得到这个......另外,请告诉我们你已经尝试过的方法以及它们有什么问题。
  • 是的,A 是我的输入。到目前为止,我只尝试了 np.where。

标签: arrays numpy python-3.7


【解决方案1】:

你可以在A的转置上使用where

np.where(A.T)[1]
# array([3, 2, 3, 0, 0])

【讨论】:

    【解决方案2】:

    试试这个:

    rows, cols = np.where(A==1)
    result = rows[np.argsort(cols)]
    

    结果是array([3, 2, 3, 0, 0])。 只有满足您在每列中最多出现 1 个的假设时,它才会起作用。

    【讨论】:

      猜你喜欢
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 2013-10-10
      • 2021-08-25
      相关资源
      最近更新 更多