如何将numpy矩阵转换为布尔矩阵?

28

我在numpy中有一个 n x n 的矩阵,其中包含了0和非0的值。是否有一种简单的方法将其转换为布尔矩阵?

谢谢。


零值需要设置为false吗?还是有其他条件? - nicholaschris
4个回答

42
numpy.array(old_matrix, dtype=bool)

或者,

old_matrix != 0
第一个版本是对布尔值进行逐个强制转换。类似的构造可用于转换为其他数据类型。第二个版本是对0进行逐个比较。虽然打字较少,但在我计时时运行稍微慢一些。使用哪种方式取决于您;我可能会根据“转换为布尔值”或“与0比较”哪个更好地描述了我想要的内容来决定使用哪个。

谢谢,我会选择更快的那个 - 矩阵会非常大且稀疏。 - user7289

20

您应该使用 array.astype(bool)(或 array.astype(dtype=bool))。也适用于矩阵。


4

只需使用等式检查:

假设a是您的numpy矩阵,请使用b = (a == 0)或b = (a != 0)来获取布尔值矩阵。

在某些情况下,由于值可能足够小但非零,您可以使用abs(a)< TH,其中TH是您设置的数值阈值。


4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接