当前位置: 首页 > 面试题库 >

插值时间序列,从x中选择y值

方寒
2023-03-14
问题内容

我一直在寻找答案的方法,已经很接近了,但是一直遇到错误。有很多类似的问题几乎可以回答这个问题,但是我一直无法解决。任何帮助或朝着正确方向的观点表示赞赏。

我有一张图,显示温度是深度的主要非线性函数,而x和y值则取自熊猫数据框。

import matplotlib.pyplot as plt

x = (22.81,  22.81,  22.78,  22.71,  22.55,  22.54,  22.51,  22.37)
y = (5, 16, 23, 34, 61, 68, 77, 86)

#Plot details
plt.figure(figsize=(10,7)), plt.plot(style='.-')
plt.title("Temperature as a Function of Depth")
plt.xlabel("Temperature"), plt.ylabel("Depth")
plt.gca().invert_yaxis()
plt.plot(x,y, linestyle='--', marker='o', color='b')

这给了我一张像这样的图像(注意,因为我在谈论深度,所以翻转了y轴):

在此处输入图片说明

我想在特定的x值22.61下找到y值,这不是数据集中的原始温度值之一。我尝试了以下步骤:

np.interp(22.61, x1, y1)

这给了我一个我知道是不正确的值,

s = pd.Series([5,16,23,34,np.nan,61,68,77,86], index=[22.81,22.81,22.78,22.71,22.61,22.55,22.54,22.51,22.37])
s.interpolate(method='index')

在这里,我试图设置框架并强制插值。我也试过

line = plt.plot(x,y)
xvalues = line[0].get_xdata()
yvalues = line[0].get_ydata()
idx = np.where(xvalues==xvalues[3]) ## 3 is the position
yvalues[idx]

但这会为已列出的特定x值返回y值,而不是内插值。

我希望这足够清楚。我是数据科学和stackoverflow的新手,所以如果我需要改写这个问题,请告诉我。


问题答案:

您确实可以使用该numpy.interp功能。如文档所述

数据点的x坐标必须增加[…]

因此,在使用此功能之前,您需要对x数组上的数组进行排序。

# Sort arrays
xs = np.sort(x)
ys = np.array(y)[np.argsort(x)]

# x coordinate
x0 = 22.61
# interpolated y coordinate
y0 = np.interp(x0, xs, ys)

完整的代码:

import numpy as np
import matplotlib.pyplot as plt

x = (22.81,  22.81,  22.78,  22.71,  22.55,  22.54,  22.51,  22.37)
y = (5, 16, 23, 34, 61, 68, 77, 86)

# Sort arrays
xs = np.sort(x)
ys = np.array(y)[np.argsort(x)]

# x coordinate
x0 = 22.61
# interpolated y coordinate
y0 = np.interp(x0, xs, ys)

#Plot details
plt.figure(figsize=(10,7)), plt.plot(style='.-')
plt.title("Temperature as a Function of Depth")
plt.xlabel("Temperature"), plt.ylabel("Depth")
plt.gca().invert_yaxis()
plt.plot(x,y, linestyle='--', marker='o', color='b')
plt.plot(x0,y0, marker="o", color="C3")

在此处输入图片说明



 类似资料:
  • 问题内容: 我有一个MySQL表,其中包含以下类型的信息: 这是我用来从该表获取数据的脚本示例: 该脚本显示表格中的每个日期,例如 我只想显示唯一的日期,例如 问题答案: 在MySQL中使用DISTINCT运算符:

  • 问题内容: 我在数据库中有一个表,该表有9列包含相同种类的数据,这些值 允许为null 。我需要将每个非null值选择到单列的值中,这些值不关心它们源自的行的身份。 因此,对于一个看起来像这样的表: 我希望将每个以x开头的值选择到一列中。我得到的数据应如下表所示。需要保留顺序,因此第一行的第一列值应该在顶部,而最后一行的最后列值应该在底部: 我正在使用 SQL Server 2008 R2 。是否

  • 问题内容: 考虑下表: 如何编写仅返回 数字 值的select语句 SQLFiddle 问题答案:

  • 问题内容: 我有一个用于“个人档案”的表,以行样式存储个人档案属性值,例如: 和另一个用于属性定义的表: 如何使用或以任何其他方式以这种方式显示它: 问题答案: 不用关键字就可以轻松完成此操作,只需将其分组即可 您也可以使用关键字执行此操作

  • 我有一个堆叠的条形图。我想画一条线,就像对堆叠的条形图的几个条形进行分组一样。 一些人请帮助绘制这些线使用D3。 JS:

  • 我正在尝试从一个select表单中获取一个时间值。我在代码中看不到任何错误,尝试更改所有类名和变量,但值仍然没有被get select。(提交表单后我看不到所选的值) 代码添加如下:

  • 问题内容: 我正在尝试在2列之间选择一个值。这是我的数据集 我的目标是(如果我的值为2)是选择 ID为1 (在from和to之间)的行。所以这是我正在使用的查询: 这是MySQL执行此查询时返回的结果: 我正在寻找的结果如下: 我尝试使用<和>等。但是,我总是得到两个结果。任何帮助将非常感激。 问题答案: 所以,您不希望下限具有包容性,对吗?

  • 问题内容: 我有一个类型为“ datetime”的列,其值类似于2009-10-20 10:00:00 我想从datetime提取日期并编写类似的查询: 以下是最好的方法吗? 但是,这将返回一个空的结果集。有什么建议么? 问题答案: 您可以使用MySQL的功能: 您也可以尝试以下方法: 有关使用的性能影响的信息,请参见此答案。