我在numpy中有一个 n x n 的矩阵,其中包含了0和非0的值。是否有一种简单的方法将其转换为布尔矩阵?
谢谢。
numpy.array(old_matrix, dtype=bool)
或者,
old_matrix != 0
第一个版本是对布尔值进行逐个强制转换。类似的构造可用于转换为其他数据类型。第二个版本是对0进行逐个比较。虽然打字较少,但在我计时时运行稍微慢一些。使用哪种方式取决于您;我可能会根据“转换为布尔值”或“与0比较”哪个更好地描述了我想要的内容来决定使用哪个。您应该使用 array.astype(bool)
(或 array.astype(dtype=bool)
)。也适用于矩阵。
只需使用等式检查:
假设a是您的numpy矩阵,请使用b = (a == 0)或b = (a != 0)来获取布尔值矩阵。
在某些情况下,由于值可能足够小但非零,您可以使用abs(a)< TH,其中TH是您设置的数值阈值。
old_matrix.astype(bool)