首页 > 解决方案 > 用值替换数组的numpy数组

问题描述

我正在尝试转换一个 numpy 数组数组。一个示例输入是这样的:

np.array([[[0, 0, 0], [255, 255, 255]], [[255, 255, 255], [0, 0, 0]]], np.uint8)

我想[0, 0, 0]0[255, 255, 255]with的值替换所有数组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 执行此操作,但我找不到方法。你有什么建议可以提高效率吗?

标签: numpyreplace

解决方案


X_new = np.mean(X, axis=2)
X_new
array([[  0., 255.],
       [255.,   0.]])

推荐阅读