首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回第一个/最左边匹配的Python interp函数?

返回第一个/最左边匹配的Python interp函数?
EN

Stack Overflow用户
提问于 2022-05-04 02:09:58
回答 1查看 85关注 0票数 0

我得到了一些类似于选定的百分位值(第5、10、25、50等),并且需要找出给定值的百分位数是什么。所以,我试过了“胖”和“胖”,但遇到了一个问题。多个百分位数具有相同的值并不少见(例如,从0到第50百分位数)。当我插值时,它总是返回最高值,这会给我的大容量统计数据带来一个倾斜。下面我有一个简单的例子。X是百分位数,Y是对应的百分位数。0.0是我要插值的值。似乎插值函数和方法是相当有限的,因为我有重复的x值。

代码语言:javascript
复制
x=[0.0,0.0,0.0,0.0,0.05,0.2,0.5]
y=[5,10,25,50,75,90,95]
interp = interp1d(x, y, kind='slinear', fill_value='extrapolate')
z2 = np.interp(0.0, x, y, left=0, right=100).round(1)
z = interp(0.0)
print(z)
print(z2)

在这种情况下,z和z2都返回50.0,当我期望/要0.0或5.0时(取决于外推法)。是否有任何强制这些返回最小可能值,中间可能值,或任何其他方式来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-04 03:10:07

np.interp()scipy.interpolate.interp1d()都要求x值必须严格增加(即x[i+1] > x[i]),如果不是,则可能返回无稽之谈。如果您想要某种特定的行为,则需要对数据进行预处理,以消除任何重复的x值。例如:

代码语言:javascript
复制
# assuming x and y are already sorted
x_fixed, indices = np.unique(x, return_index=True)
y_fixed = [np.min(vals) for vals in np.split(y, indices[1:])]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72107274

复制
相关文章

相似问题

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