如何将非常小的科学符号归零



b的子列表中,数字非常接近零,我想让它等于零,如果它们是&gt-1e-05.

有更好的方法吗?


b = [[0.0, -2.220446049250313e-16, -8.881784197001252e-16, -6.661338147750939e-16, 0.0],
[0.0, -0.1875000, -0.1250000, -0.0625000, 0.0], 
[0.0, -0.125000, -0.25000, -0.1250, 0.0], 
[0.0, -0.06250, -0.1250, -0.18750, 0.0], [0, 0, 0, 0, 0]]
for i in b:
for j in i:
if j > -1e-05:
j = 0
else:
j = j

要执行此操作,可以使用numpynp.where。首先将您的列表转换为数组:

import numpy as np
b = np.array(b)

然后使用np.where修改您的数组。第一个参数是您的条件,第二个参数是条件满足时您希望数组具有的值,第三个参数是不满足条件时您希望阵列具有的值:

>>> np.where(b>-10**(-5), 0, b)
array([[ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ],
[ 0.    , -0.1875, -0.125 , -0.0625,  0.    ],
[ 0.    , -0.125 , -0.25  , -0.125 ,  0.    ],
[ 0.    , -0.0625, -0.125 , -0.1875,  0.    ],
[ 0.    ,  0.    ,  0.    ,  0.    ,  0.    ]])

最新更新