2

我想问一下如何更改整个 NumPy 数组中的值。

例如,我想更改每个< 1e-15等于 的值1e-15

4

4 回答 4

3

如果L是一个列表:

L[:] = [max(x, 10e-15) for x in L]
于 2012-08-06T10:58:48.537 回答
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 数组。

于 2012-08-06T10:58:57.877 回答
3

假设您的意思是一个 numpy 数组,并且它由一个变量指向a

np.fmax(a, 1e-15, a)

a这会在每个元素的基础上找到作为前两个参数 (和)给出的两个值的最大值1e-15,并将结果写回作为第三个参数给出的数组,a

我很难找到这个函数的官方文档,但我找到了这个

于 2012-08-06T11:04:54.323 回答
2

我喜欢numpy.fmax(这对我来说是新的),但对于一个可能更通用的情况,我经常使用:

a[a < 1e-15] = 1e-15

(在您可以改变条件或替换值不等于比较值的意义上更通用。)

于 2012-08-07T12:16:28.420 回答