在b
的子列表中,数字非常接近零,我想让它等于零,如果它们是>-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
要执行此操作,可以使用numpy
和np.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. ]])