我有一个 3D 数据集,我想对其进行插值和线性外推。使用 可以轻松完成插值scipy.interpolate.LinearNDInterpolator。该模块只能为参数范围之外的值填充常量/nan,但我不明白为什么它不提供打开外推法的选项。
查看代码,我发现该模块是用 cython 编写的。由于没有 cython 经验,很难使用代码来实现外推。我可以用纯Python代码编写它,但也许这里的其他人有更好的主意?我的特殊情况涉及恒定的 xy 网格,但 z 值不断变化(-100,000),因此插值必须很快,因为每次 z 值变化时都会运行插值。
根据要求给出一个基本示例,假设我有一个像
xyPairs = [[-1.0, 0.0], [-1.0, 4.0],
[-0.5, 0.0], [-0.5, 4.0],
[-0.3, 0.0], [-0.3, 4.0],
[+0.0, 0.0], [+0.0, 4.0],
[+0.2, 0.0], [+0.2, 4.0]]
Run Code Online (Sandbox Code Playgroud)
假设我想计算x = -1.5, -0.8, +0.5和 处的值y = -0.2, +0.2, +0.5。目前,我正在对每个 y 值沿 x 轴执行一维插值/外推,然后对每个 x 值沿 y 轴执行一维插值/外推。外推由 中的第二个函数完成ryggyr's answer。
我有过去20年的时间序列数据.这个变量每年都有测量,所以我有20个值.我有一个制表符分隔的文件,第一列代表年份和第二列的值.这是它的样子:
1991 438 1992 408 1993 381 1994 361 1995 338 1996 315 1997 289 1998 261 1999 229 2000 206 2001 190 2002 173 2003 151 2004 141 2005 126 2006 108 2007 99 2008 93 2009 85 2010 77 2011 71 2012 67
我想推断未来几年第二列的价值.第二列中的值正在下降的速度也在下降,所以我认为我们不能使用线性回归.我想知道第二列将在哪一年接近零值.我从来没有使用过R,所以如果你甚至可以帮助我使用用于从制表符分隔文件中读取数据的代码,那将会很棒.
谢谢
快点我有什么!!我有一个定义的屏幕尺寸(5.5 英寸)和分辨率(500 像素宽度和 350 像素高度),并且我在这个屏幕上有某个位置(x,y)的坐标。
我会有什么!!我将有新屏幕尺寸(8.2 英寸)和分辨率(1020 px 宽和 730 px 高)的规格。
我需要计算/推断/查找什么?我需要在具有新分辨率的新屏幕尺寸上找到相同的 x,y 位置。而且我需要一个可以在任何屏幕尺寸或分辨率上工作的通用解决方案。
任何人都可以帮我解决这个问题。
我想对ggplot2超出该数据区域的数据子集的数据进行线性拟合(以便可视化外推的危险).在下面的代码中,我想将1980-1990帧生成的线性拟合扩展到1990-2000,这样我就可以在整个时间段内添加完全拟合并可视化差异:
set.seed(123)
frame <- data.frame(year = rep(1980:2000, 10), y = sample(1:1000, 210))
head(frame)
frame1 <- frame[frame$year %in% c(1980:1990),]
frame2 <- frame[frame$year %in% c(1980:2000),]
ggplot(frame1, aes(x = year, y = y)) + geom_point(shape = 1) + geom_smooth(method = lm) + xlim(1980, 2000)
ggplot(frame2, aes(x = year, y = y)) + geom_point(shape = 1) + geom_smooth(method = lm) + xlim(1980, 2000)
Run Code Online (Sandbox Code Playgroud)
我是新手,ggplot2所以如何从第一帧扩展线性拟合,然后添加数据和新的拟合与不同的颜色将是伟大的.谢谢.
好的,所以我几天前开始使用Python.我主要将它用于DataScience,因为我是一名本科化学专业的学生.好吧,现在我手上有一个小问题,因为我必须推断一个功能.我知道如何制作简单的图表和图表,所以请尽量解释它对我来说很容易.我从以下开始:
from matplotlib import pyplot as plt
from matplotlib import style
style.use('classic')
x = [0.632455532, 0.178885438, 0.050596443, 0.014310835, 0.004047715]
y = [114.75, 127.5, 139.0625, 147.9492188, 153.8085938]
x2 = [0.707, 0.2, 0.057, 0.016, 0.00453]
y2 = [2.086, 7.525, 26.59375,87.03125, 375.9765625]
Run Code Online (Sandbox Code Playgroud)
所以有了这些值,我必须找出一种方法来推断,以便在我的x = 0时获得ay(或y2)值.我知道如何以数学方式做到这一点,但我想知道python是否可以做到这一点以及如何在Python中执行它.有一个简单的方法吗?你能给我一个我给定值的例子吗?谢谢
我有一个df喜欢
d = {'col1': [np.nan, np.nan, 1],
'col2': [1, 1, 2],
'col3': [2, 2, 3],
'col4': [np.nan, 3, np.nan]}
df = pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)
并希望对行进行外推以填充任何尾随nans。
预期输出:
d2 = {'col1': [np.nan, np.nan, 1],
'col2': [1, 1, 2],
'col3': [2, 2, 3],
'col4': [3, 3, 4]}
df2 = pd.DataFrame(data=d2)
Run Code Online (Sandbox Code Playgroud)
编辑:每行的斜率都不同。我试过了,df.interpolate(method='linear')但这给了我尾随nans的平坦趋势
我正在使用2-D插值interp2.对于某些数据值,interp2命令返回NaN,因为其中一个维度超出了已知值向量定义的范围.
可以使用interp1命令进行推断.但是,有没有办法做到这一点interp2?
谢谢
这是我使用interp2命令的代码:
function [Cla] = AirfoilLiftCurveSlope(obj,AFdata,Rc,M)
% Input:
% AFdata: Airfoil coordinates.
% Rc: Local Reynolds number.
% M: Mach number for Prandtle Glauert compressibility correction.
% Output:
% Cla: 2 dimensional lift curve slopea applicable to linear region of lift polar.
load('ESDU84026a.mat');
xi = size(AFdata);
if mod(xi(1,1),2) == 0
%number is even
AFupper = flipud(AFdata(1:(xi(1,1)/2),:));
AFlower = AFdata(((xi(1,1)/2)+1):end,:);
else
%number is odd
AFupper = flipud(AFdata(1:floor((xi(1,1)/2)),:));
AFlower = AFdata((floor(xi(1,1)/2)+1):end,:);
end
t_c = …Run Code Online (Sandbox Code Playgroud) 所以,我有以下问题:我有一个数据集 A(data.table 对象),其结构如下:
date days rate
1996-01-02 9 5.763067
1996-01-02 15 5.745902
1996-01-02 50 5.673317
1996-01-02 78 5.608884
1996-01-02 169 5.473762
1996-01-03 9 5.763067
1996-01-03 14 5.747397
1996-01-03 49 5.672263
1996-01-03 77 5.603705
1996-01-03 168 5.470584
1996-01-04 11 5.729460
1996-01-04 13 5.726104
1996-01-04 48 5.664931
1996-01-04 76 5.601891
1996-01-04 167 5.468961
请注意,天数列及其大小可能因每天而异。我现在的目标是(分段线性地)在几天内插入速率。我这样做的每一天通过
approx(x=A[,days],y=A[,rate],xout=days_vec,rule=2)
Run Code Online (Sandbox Code Playgroud)
where days_vec <- min_days:max_days,即我感兴趣的天数范围(比如 1:100)。
我在这里有两个问题:
大约只进行插值,即它不会在 min(x) 和 max(x) 之间创建线性拟合。如果我现在对 1:100 天感兴趣,我首先需要使用第 9 天和第 15 天(A 的前 2 行)通过以下方式手动完成:
first_days …
我有一个数据点非常有限的数据集。
x<- c(4, 8, 13, 24)
y<- c(40, 37, 28, 20)
df<- data.frame(x,y)
Run Code Online (Sandbox Code Playgroud)
现在我想推断这些数据,创建一个数据集,其中 y 的值将为 1-100 之间的 x 的每个值(无小数)给出。x 和 y 具有线性关系。
其次,可以通过使用循环之类的东西来对多个数据帧完成此操作吗?谢谢你!
r ×4
numpy ×2
python ×2
scipy ×2
coordinates ×1
data.table ×1
dataframe ×1
dataset ×1
device ×1
ggplot2 ×1
lm ×1
matlab ×1
matplotlib ×1
pandas ×1
screen ×1
squish ×1
time-series ×1