【问题标题】:How can I crop a python array to only non-zero values如何将 python 数组裁剪为仅非零值
【发布时间】:2022-12-02 21:21:28
【问题描述】:

我有一个 numpy 像素数据数组,比如

0 0 0 0 0 0 0
0 1 3 4 6 1 0
0 2 3 5 2 1 0
0 1 0 0 1 0 0
0 0 0 0 0 0 0

我想得到一个新数组,它排除任何带零的外部行/列,所以我最终只得到非零值,即

1 3 4 6 1
2 3 5 2 1

到目前为止,我所设法得到的是

1 3 4 6 1
2 3 5 2 1
1 0 0 1 0

使用 np.argwhere 查找“最小”和“最大”非零值,但这仍然包括具有零值和非零值的行/列。

【问题讨论】:

    标签: python-3.x numpy-ndarray


    【解决方案1】:

    欢迎来到 StackOverflow!

    输入:
    pixles_input = np.array([[0, 0, 0, 0, 0, 0, 0],
                             [0, 1, 3, 4, 6, 1, 0],
                             [0, 2, 3, 5, 2, 1, 0],
                             [0, 1, 0, 0, 1, 0, 0],
                             [0, 0, 0, 0, 0, 0, 0]])
    

    说明

    pixles_input = pixles_input[1:-1, 1:-1]
    
    # Convert pixles_input to list of lists
    pixles_input = pixles_input.tolist()
    
    # remove sub list that contains a zero
    pixles_input = [sub for sub in pixles_input if 0 not in sub]
    
    # Convert pixles_input to numpy array
    pixles_input = np.array(pixles_input)
    
    输出:
    [[1 3 4 6 1],
    [2 3 5 2 1]]
    

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 1970-01-01
      • 2017-01-20
      • 2018-12-13
      • 1970-01-01
      • 2018-08-16
      • 2018-05-12
      • 2020-06-26
      • 2020-09-23
      相关资源
      最近更新 更多