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

时间:2013-12-04 10:38:51

标签: python numpy

我在numpy中有一个n x n矩阵,它有0和非0值。有没有办法轻松将其转换为布尔矩阵?

感谢。

4 个答案:

答案 0 :(得分:9)

numpy.array(old_matrix, dtype=bool)

可替换地,

old_matrix != 0

第一个版本是对布尔值的元素强制。类似的结构将用于转换为其他数据类型。第二个版本是0的元素比较。它涉及较少的输入,但在我计时时运行稍慢。您使用哪个取决于您;我可能会根据“转换为布尔值”或“比较为0”来决定是否对我所追求的内容有更好的概念性描述。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

只需使用等式检查:

假设a是你的numpy矩阵,使用b =(a == 0)或b =(a!= 0)来得到布尔值矩阵。

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

答案 3 :(得分:0)

  

.astype(dtype)

     

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.ndarray.astype.html

很高兴这将适用于类似0.1.的二进制浮点数。

old_matrix.astype(bool)