我正在尝试定期插入网格windstress使用Scipy的RectBivariateSpline的数据类(class)。在某些网格点,输入数据包含无效数据条目,这些条目被设置为NaN值。首先,我使用了Scott'squestion的解决方案关于二维插值。使用我的数据,插值返回一个仅包含NaN的数组。我还尝试了一种不同的方法,假设我的数据是非结构化的并使用SmoothBivariateSpline类(class)。显然我有太多数据点无法使用非结构化插值,因为数据数组的形状是(719x2880)。为了说明我的问题,我创建了以下脚本:from__future__importdivisioni
我正在尝试绘制时间序列数据,但我遇到了一些问题。我正在使用这段代码:frommatplotlibimportpyplotaspltplt.figure('Fig')plt.plot(data.index,data.Colum,'g',linewidth=2.0,label='Data')我明白了:但我不想在缺失值之间进行插值!我怎样才能做到这一点? 最佳答案 因为你使用的是pandas,你可以这样做:importpandasaspdimportmatplotlib.pyplotaspltpd.np.random.seed(1234)
[EDIT00]:我已经多次编辑帖子,现在甚至编辑标题,请阅读下文。我刚刚了解了格式字符串方法及其与字典的用法,例如vars()、locals()和globals(),示例:name='Ismael'print'Mynameis{name}.'.format(**vars())但我想做的是:name='Ismael'print'Mynameis{name}.'#Similartoruby所以我想到了这个:defmprint(string='',dictionary=globals()):printstring.format(**dictionary)您可以在此处与代码进行交互:http
我一直在尝试使用scipy.interpolate.bisplrep()和scipy.interpolate.interp2d()在我的(218x135)2D球形极坐标网格上查找数据的插值。我将我的网格节点的笛卡尔位置的二维数组X和Y传递给它们。我不断收到如下错误(对于线性插值。使用interp2d):“警告:不能添加更多的结,因为额外的结会重合和一个旧的。可能原因:重量太小或太大到一个不准确的数据点。(fp>s)kx,ky=1,1nx,ny=4,5m=29430fp=1390609718.902140s=0.000000"使用默认的平滑参数s等,我得到了双变量样条的类似结果。我的数据
是否有可能为任何给定的索引生成一个对其值进行插值的序列。我有一个我希望规定的预定义插值方案,我宁愿调用者不自己应用插值,以避免任何可能的错误。classInterpolatedSeries(pd.Series):pass#magic?s=pd.Series([1,3],index=[1,3])i=InterpolatedSeries(s,forward='nearest',backward='nearest',middle='linear')调用者将收到i作为结果,他们现在可以请求任何值,我相信他们获得的值符合规定的插值方案。插值肯定不是可预先计算的(因为我们不知道他们会提前请求哪些点
考虑pd.Seriessimportpandasaspdimportnumpyasnps=pd.Series([np.nan,1,np.nan,3,np.nan])我如何进行插值以获得:pd.Series([np.nan,1,2,3,np.nan])0NaN11.022.033.04NaNdtype:float64注意:我希望保留第一个和最后一个np.nan我只想在两边都有值进行插值时填写值。换句话说,我想插值,而不是外推。 最佳答案 我这样做-跳过标题和尾部NA:s.iloc[s.first_valid_index():s.las
我有一个numpy数组,我希望使用opencv调整它的大小。它的值范围从0到255。如果我选择使用cv2.INTER_CUBIC,我可能会得到这个范围之外的值。这是不可取的,因为调整大小的数组应该仍然表示图像。一种解决方案是将结果裁剪到[0,255]。另一种是使用不同的插值方法。据我了解,使用INTER_AREA对图像进行下采样是有效的,但在对图像进行上采样时,其工作方式与最近邻相似,因此渲染效果不符合我的目的。我应该使用INTER_CUBIC(和剪辑)、INTER_AREA还是INTER_LINEAR?使用INTER_CUBIC的值超出范围的示例:a=np.array([0,10
我正在编写一个python脚本来使用样条插值一组给定的点。这些点由它们的[x,y]坐标定义。我尝试使用这段代码:x=np.array([23,24,24,25,25])y=np.array([13,12,13,12,13])tck,u=scipy.interpolate.splprep([x,y],s=0)unew=np.arange(0,1.00,0.005)out=scipy.interpolate.splev(unew,tck)这给了我这样的曲线:但是,我需要一条平滑的闭合曲线——在上图中,其中一个点的导数显然不相同。我怎样才能做到这一点? 最佳答案
我有一个3D空间(x,y,z),每个点都有一个附加参数(能量),总共提供4个维度的数据。我想找到一组x、y、z点,这些点对应于通过在已知点之间插值找到的等能面。空间网格具有恒定的间距,完全包围等能面,但不占据立方空间(网格大致占据圆柱空间)速度并不重要,我可以让这个数字处理一会儿。尽管我使用Python和NumPy编写代码,但我可以使用FORTRAN编写部分代码。我还可以包装现有的C/C++/FORTRAN库以在脚本中使用(如果存在此类库)。到目前为止,我在网上(以及在NumericalRecipes中)找到的所有示例和算法都缺少4D数据。 最佳答案
当使用pandasinterpolate()填充NaN值时,如下所示:In[1]:s=pandas.Series([np.nan,np.nan,1,np.nan,3,np.nan,np.nan])In[2]:s.interpolate()Out[2]:0NaN1NaN2132435363dtype:float64In[3]:pandas.version.versionOut[3]:'0.16.2',为什么pandas将索引5和6处的值替换为3,而将0和1处的值保留原样?我可以改变这种行为吗?我想在索引5和6处保留NaN。(实际上,我希望它进行线性外推以填充所有0、1、5和6,但这是一个