我正在尝试转换一个numpy数组。输入示例如下:
np.array([[[0, 0, 0], [255, 255, 255]], [[255, 255, 255], [0, 0, 0]]], np.uint8)
我想用[0, 0, 0]
替换值为0
的所有数组,用[255, 255, 255]
替换值为255
的所有数组。我希望最终结果采用以下格式:
np.array([[0, 255], [255, 0]], np.uint8)
该数组将始终具有上述值,但大小将不同。
这是我为此创建的代码:
array_list = []
for row in input_image:
row_list = []
for item in row:
if np.array_equal(item, [0, 0, 0]):
row_list.append(0)
else:
row_list.append(255)
array_list.append(row_list)
output_image = np.array(array_list, np.uint8)
上面的代码对于大型数组非常慢,我一直在想也许有一种方法可以直接用numpy来做到这一点,尽管我找不到方法。您对提高效率有什么建议吗?
答案 0 :(得分:2)
X_new = np.mean(X, axis=2)
X_new
array([[ 0., 255.],
[255., 0.]])