【问题标题】:Replace numbers in numpy array based on another array根据另一个数组替换numpy数组中的数字
【发布时间】:2021-10-13 13:37:26
【问题描述】:

我有一个目标数组/向量,它是 1 和 0 的组合。它是稀疏的(6%,其余为 0),但当有 1 时,通常连续有 3 个左右。目标数组示例 = [1,1,0,0,0,1,1,1,0,...]。

我还有一个矩阵,其行数与上述目标数组相同。矩阵的每一列也用 1 和 0 填充。对于每一列,我希望在目标数组中有 1 的每个“区域”中只有一个 1。

例如,如果矩阵中的第一列是 [1,1,0,1,0,0,1,1,0,...] 那么这将变为 [1,0,0,1, 0,0,1,0,0,...] 基于前面给出的示例目标数组。

请注意,在目标数组中每个 1 的“区域”内,仅保留该列区域中的第一个 1。另请注意,“区域”之外的列中的 1 不受影响。

如何在 numpy 中有效地执行此操作?非常感谢任何帮助:) 谢谢!

【问题讨论】:

    标签: python numpy matrix vector binary


    【解决方案1】:

    你可以试试这个代码:

    import numpy as np
    
    mask=np.array([1,1,0,0,0,1,1,1,0], dtype=np.uint8)
    col=np.array([1,1,0,1,0,0,1,1,0], dtype=np.uint8)
    part1=~mask&col
    part2=np.uint8(np.diff(np.insert(mask&col,0,0))==1)
    res=part1|part2
    print(res)
    

    【讨论】:

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