首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能把scipy.interpolate.interp1d矢量化吗?

我能把scipy.interpolate.interp1d矢量化吗?
EN

Stack Overflow用户
提问于 2019-12-08 03:09:15
回答 1查看 266关注 0票数 5

interp1d对我所拥有的各个数据集工作得很好,但是我有超过500万个需要插值的数据集。

我需要插值是三次的,每个子集应该有一个插值。

现在,我可以使用for循环来完成这一任务,但是,要插值500万集,这需要相当长的时间(15分钟):

代码语言:javascript
复制
interpolants = []
for i in range(5000000):             
    interpolants.append(interp1d(xArray[i],interpData[i],kind='cubic'))

我想做的可能是这样的:

代码语言:javascript
复制
interpolants = interp1d(xArray, interpData, kind='cubic')

但是,如果出现以下错误,则失败:

代码语言:javascript
复制
ValueError: x and y arrays must be equal in length along interpolation axis.

我的x数组(xArray)和y数组(interpData)都有相同的尺寸.

我可以并行化for循环,但这只会使速度略有提高,我非常喜欢将操作向量化。

EN

回答 1

Stack Overflow用户

发布于 2022-01-31 16:10:40

在过去的几天里,我也一直试图做一些类似的事情。最后,我使用np.vectorize (使用功能签名 )成功地做到了这一点。尝试使用下面的代码片段:

代码语言:javascript
复制
fn_vectorized = np.vectorize(interpolate.interp1d,
                                     signature='(n),(n)->()')
interp_fn_array = fn_vectorized(x[np.newaxis, :, :], y)

xy是形状数组(m )。目的是为x的第一行和y的第一行生成一个插值函数数组。数组interp_fn_array包含插值函数(形状为(1×m) )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59232105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档