我使用 MNIST 数据集,其中包含 28x28 灰度图像,表示为具有 0-255 值的 numpy 数组。我想将图像仅转换为黑白(0 和 1),以便值超过 128 的像素将获得值 1,值低于 128 的像素将获得值 0。
有没有简单的方法?
是的。使用
(arr > 128)
获取与图像形状相同的布尔掩码数组,然后 .astype(int)
将布尔值转换为整数:
>>> import numpy as np
>>> arr = np.random.randint(0, 255, (5, 5))
>>> arr
array([[153, 167, 141, 79, 58],
[184, 107, 152, 215, 69],
[221, 90, 172, 147, 125],
[ 93, 35, 125, 186, 187],
[ 19, 72, 28, 94, 132]])
>>> (arr > 128).astype(int)
array([[1, 1, 1, 0, 0],
[1, 0, 1, 1, 0],
[1, 0, 1, 1, 0],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 1]])