gpt4 book ai didi

python - 在 numpy 中一次将函数应用于 3 个元素

转载 作者:太空宇宙 更新时间:2023-11-04 09:18:53 24 4
gpt4 key购买 nike

我想一次将一个函数应用于 3 个元素的一维数组,并为每个元素输出一个元素。

例如我有一个包含 13 个元素的数组:

a = np.arange(13)**2

我想应用一个函数,我们以 np.std 为例。

这是等效的列表理解:

[np.std(a[i:i+3]) for i in range(0, len(a),3)] 
[1.6996731711975948,
6.5489609014628334,
11.440668201153674,
16.336734339790461,
0.0]

有人知道使用 numpy 函数的更有效方法吗?

最佳答案

最简单的方法是 reshape 它并沿轴应用函数。

import numpy as np
a = np.arange(12)**2
b = a.reshape(4,3)
print np.std(b, axis=1)

如果您需要比这更好的性能, 您可以尝试 stride_tricks .除了使用 stride_tricks 之外,下面与上面相同。我对性能提升的看法是错误的,因为正如您在下面看到的,b 变成与上面的 b 完全相同的 View 。如果它们编译成完全相同的东西,我不会感到惊讶。

import numpy as np
a = np.arange(12)**2
b = np.lib.stride_tricks.as_strided(a, shape=(4,3), strides=(a.itemsize*3, a.itemsize))
print np.std(b, axis=1)

关于python - 在 numpy 中一次将函数应用于 3 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5163974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com