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