【发布时间】:2017-10-02 00:05:20
【问题描述】:
我有以下问题。我正在尝试找到在 x 坐标的二维数组上使用 numpy 插值方法的最快方法。
import numpy as np
xp = [0.0, 0.25, 0.5, 0.75, 1.0]
np.random.seed(100)
x = np.random.rand(10)
fp = np.random.rand(10, 5)
所以基本上,xp 将是数据点的 x 坐标,x 将是一个包含我想要插值的值的 x 坐标的数组,fp 将是一个二维包含数据点的 y 坐标的数组。
xp
[0.0, 0.25, 0.5, 0.75, 1.0]
x
array([ 0.54340494, 0.27836939, 0.42451759, 0.84477613, 0.00471886,
0.12156912, 0.67074908, 0.82585276, 0.13670659, 0.57509333])
fp
array([[ 0.89132195, 0.20920212, 0.18532822, 0.10837689, 0.21969749],
[ 0.97862378, 0.81168315, 0.17194101, 0.81622475, 0.27407375],
[ 0.43170418, 0.94002982, 0.81764938, 0.33611195, 0.17541045],
[ 0.37283205, 0.00568851, 0.25242635, 0.79566251, 0.01525497],
[ 0.59884338, 0.60380454, 0.10514769, 0.38194344, 0.03647606],
[ 0.89041156, 0.98092086, 0.05994199, 0.89054594, 0.5769015 ],
[ 0.74247969, 0.63018394, 0.58184219, 0.02043913, 0.21002658],
[ 0.54468488, 0.76911517, 0.25069523, 0.28589569, 0.85239509],
[ 0.97500649, 0.88485329, 0.35950784, 0.59885895, 0.35479561],
[ 0.34019022, 0.17808099, 0.23769421, 0.04486228, 0.50543143]])
期望的结果应该是这样的:
array([ 0.17196795, 0.73908678, 0.85459966, 0.49980648, 0.59893702,
0.9344241 , 0.19840596, 0.45777785, 0.92570835, 0.17977264])
再次,寻找最快的方法是因为这是我的问题的简化版本,长度约为 100 万而不是 10。
谢谢
【问题讨论】:
-
你现在如何获得想要的输出?似乎您希望
x中的每个元素插入fp中的相应行,但我可能弄错了,因为我必须通过逆向工程来计算您的值。 -
最初,我与
pandas合作,但我试图独立于pandas,主要是因为速度问题。所以我有了如何通过作弊得出答案的想法。但是,是的,你的理解是正确的。我今天早上正在测试你的答案,谢谢。仅供参考,这是我使用 pandas 的问题的链接(问题稍作修改):[根据列值从数据框中插入值][1] [1]:stackoverflow.com/questions/43765796/…
标签: numpy interpolation linear-interpolation