剪切一些值为255

时间:2016-05-23 13:09:30

标签: python arrays numpy

我试图摆脱灰度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解决方案。

2 个答案:

答案 0 :(得分:2)

给出行和列的布尔数组:

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)])

产生2D数组

[[0 0]]

答案 1 :(得分:0)

对于列,您只需转置数组:

arr = arr.T[~(arr.T==255).all(1)].T
arr = arr[~(arr==255).all(1)]

导致

>> print(arr)
[[0 0]]