我试图摆脱灰度 numpy 数组中的所有行和列,其中值为 255。
我的数组可能是:
arr = [[255,255,255,255],
[255,0,0,255],
[255,255,255,255]]
结果应该是:
arr = [0,0]
我可以只对数组进行交互,但应该有一种 Pythonic 方法来解决这个问题。
对于我尝试过的行:
arr = arr[~(arr==255).all(1)]
这非常有效,但我无法为 colums 找到相同的解决方案。
最佳答案
给定行和列的 bool 数组:
In [26]: rows
Out[26]: array([False, True, False], dtype=bool)
In [27]: cols
Out[27]: array([False, True, True, False], dtype=bool)
np.ix_
创建可用于索引 arr
的序数索引器:In [32]: np.ix_(rows, cols)
Out[32]: (array([[1]]), array([[1, 2]]))
In [33]: arr[np.ix_(rows, cols)]
Out[33]: array([[0, 0]])
因此你可以使用
import numpy as np
arr = np.array([[255,255,255,255],
[255,0,0,255],
[255,255,255,255]])
mask = (arr != 255)
rows = mask.all(axis=1)
cols = mask.all(axis=0)
print(arr[np.ix_(rows, cols)])
产生二维数组
[[0 0]]
关于python - 剪切一些值为 255 的行和列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37391906/