我想问一下如何更改整个 NumPy 数组中的值。
例如,我想更改每个< 1e-15等于 的值1e-15。
如果L是一个列表:
L[:] = [max(x, 10e-15) for x in L]
假设您的意思是 lsit 而不是数组,我建议使用列表理解:
new_list = [max(x, 1e-15) for x in my_list]
(我也假设你的意思是1e-15 == 10. ** (-15)而不是10e-15 == 1e-14。)
Python 中也存在“数组”:array.array标准库中的类和 NumPy 数组。
假设您的意思是一个 numpy 数组,并且它由一个变量指向a:
np.fmax(a, 1e-15, a)
a这会在每个元素的基础上找到作为前两个参数 (和)给出的两个值的最大值1e-15,并将结果写回作为第三个参数给出的数组,a。
我很难找到这个函数的官方文档,但我找到了这个。
我喜欢numpy.fmax(这对我来说是新的),但对于一个可能更通用的情况,我经常使用:
a[a < 1e-15] = 1e-15
(在您可以改变条件或替换值不等于比较值的意义上更通用。)