我使用(128,128,3)
从PNG加载了一个形状为ImageIO
的numpy数组。
第3维似乎代表RGB值。在这种情况下,维度3的所有值均为[255,255,255]
或[0,0,0]
(即白色或黑色)。
我想摆脱三维空间,并用一个1D数组替换它,其中0表示黑色,1表示白色。因此,最终结果形状应为(128,128,1)
。
我尝试使用numpy.reshape
和numpy.transpose
的组合,但是我真的很努力地了解如何做到这一点。我是numpy和Python的初学者,所以我可能缺少一些非常简单的内容。
答案 0 :(得分:2)
它并不缺少,而且非常简单。只需索引您想要的频道:
im[:, :, 0]
要转换为零和一,可以创建一个布尔数组:
im[:, :, 0].astype(np.bool)
或将255设置为一个:
im = im[:, :, 0]
im[im > 0] = 1
创建布尔数组的更高级方法是将基础数据视为布尔值。仅当输入为uint8
时,这才可以很好地工作:
im[:, :, 0].view(dtype=np.bool)
最后,要为N维数组的最后一个维建立索引,可以使用省略号:
im[..., 0]
索引中的 ...
(或实际名称Ellipsis
)表示“对所有未明确列出的尺寸使用:
”。您可以在索引中最多使用一次。
通常,您将需要阅读indexing上的文档,然后再阅读broadcasting上的文档。那里有较温和的介绍,但是numpy文档非常全面,从马的嘴里就可以直接听到。