我想测试矩阵的所有元素是否等于零。我有一个3x3矩阵,包含非常小但非零的元素。像这样:
my_matrix = numpy.mat(
[[ 1.32439783e-16, -1.09384837e-16, 5.22327024e-17],
[ -1.47879836e-17, 1.58560316e-17, -8.18983137e-19],
[ 3.40590503e-17, -1.36768936e-17, 3.33256165e-17]]
)
我通常会使用:
np.array_equal( my_matrix, np.zeros((3,3)) )
但这会返回False
。我的印象是,由于此矩阵内所有元素的绝对值都小于numpy.finfo(float).eps
,1.0 + eps = 1.0
,这应该返回True
。
有没有办法测试矩阵中的所有值是否都小于numpy.finfo(float).eps
?
顺便说一句,numpy.finfo(float).eps = 2.22044604925e-16
。
答案 0 :(得分:3)
您正在比较两个浮点数,请改用np.allclose
:
In [119]: np.allclose( my_matrix, np.zeros((3,3)) )
Out[119]: True