- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个二维数组,其形状为 (100,100)。每个数组看起来像:
x =
[[-104.09417725 -104.08866882 -104.0831604 ..., -103.8795166 -103.87399292
-103.86849976]
...,
[-104.11058044 -104.10507202 -104.09954834 ..., -103.89535522
-103.88983154 -103.88430786]
[-104.11141968 -104.10591125 -104.10038757 ..., -103.89614868 -103.890625
-103.88513184]]
y =
[[ 40.81712341 40.81744385 40.81776428 ..., 40.82929611 40.82960129
40.82990646]
...,
[ 40.98789597 40.9882164 40.98854065 ..., 41.00011063 41.00041199
41.00072479]]
z =
[[ 1605.58544922 1615.62341309 1624.33911133 ..., 1479.11254883
1478.328125 1476.13378906]
...,
[ 1596.03857422 1600.5690918 1606.30712891 ..., 1598.56982422
1594.90454102 1594.07763672]]
我还有两个一维数组 x1 和 y1。这些x1和y1分别在x和y的范围内如:
x1 = [ 104.07794 104.03169 104.03352 104.03584 104.03835 104.04085
104.04334 104.07315 104.07133 104.07635 104.07916 104.0321
104.03481 104.03741 104.04002 104.04366 104.04572 104.04787
...................................................................
103.92937 103.89825 103.90027 103.90253 103.90352 103.90375
103.89922 103.89931 103.90145 103.90482 103.90885 103.91058
103.91243 103.91525 103.91785 103.92078 103.97814]
y1 = [ 40.9542 40.96922 40.96733 40.96557 40.96377 40.96218 40.96043
40.95446 40.95686 40.95296 40.95184 40.94984 40.94834 40.9469
40.94538 40.94287 40.94154 40.94008 40.93824 40.93705 40.93579
.........................................................................
40.89675 40.9015 40.90044 40.89948 40.89766 40.89513 40.88374
40.88118 40.87915 40.87933 40.87917 40.878 40.87675 40.87598
40.87515 40.87421 40.91258]
x1 和 y1 彼此对应为 (x1,y1),遵循以下索引,例如 (104.07794,40.9542)、(104.03169,40.96922) 等。这里我想得到的是 z1 对应于由 x,y,z 插值的 (x1,y1)。为此,我编写了如下代码:
x1,y1 = np.meshgrid(x1,y1)
f = interpolate.interp2d(x,y,z,kind='linear')
or
f = interpolate.Rbf(x,y,z,function='linear')
z1 = f(x1,y1)
但是,我不想将 x1, y1 转换为 2 d 网格,因为这个函数填充了我不喜欢填充的网格点。所以,我想插入 x1, y1 而不转换为 2 d meshgrid,但这些二维插值方法似乎要求 x,y 和 x1,y1 具有相同的尺寸。有没有办法在不使 x1,y1 和 x,y 的尺寸相同的情况下进行插值?谢谢你,艾萨克
最佳答案
我不太清楚你所说的x,y 和 x1,y1 具有相同的尺寸
是什么意思。
我可以构造一个输入数据集:
In [294]: x,y=np.meshgrid(np.arange(10),np.arange(8))
In [295]: z=x+y
In [296]: f=interpolate.Rbf(x,y,z,kind='linear')
In [297]: x.shape
Out[297]: (8, 10)
我使用meshgrid
只是因为它是生成一对构成合理表面的二维数组的最简单方法。因为 interp2d
不喜欢使用这个表面。
我可以将另一组点定义为 2 个一维数组。点的数量与定义曲面的点的数量或点的布局无关。我只需给出一个 (x1,y1) 对,它对应于定义曲面的 (x,y,z) 三元组。
In [298]: x1=np.linspace(0,10,15)
In [299]: y1=np.linspace(0,10,15)
In [300]: f(x1,y1)
Out[300]:
array([ 1.78745907e-13, 1.42752327e+00, 2.85761392e+00,
4.28560518e+00, 5.71422460e+00, 7.14293770e+00,
8.57139192e+00, 1.00000000e+01, 1.14285329e+01,
1.28573610e+01, 1.42852315e+01, 1.57040689e+01,
1.70924026e+01, 1.84049594e+01, 1.95946258e+01])
事实上,x
是 2d 并不重要;我可以扁平化输入。 interp2d
的文档特别提到对多维输入执行此操作。
f1=interpolate.Rbf(x.flatten(), y.flatten(), z.flatten(), kind='linear')
插值点也可以排列成二维形状
f(x1.reshape((3,5)), y1.reshape((3,5)))
相同的插值,只是排列在 (3,5) 数组中。
<小时/>interp2d
的操作有点不同。使用“三次”似乎比“线性”更满意(我还没有深入研究原因):
In [326]: f2=interpolate.interp2d(x,y,z,kind='cubic')
In [327]: z1=f2(x1,y1)
In [328]: z1.shape
Out[328]: (15, 15)
结果是(x1.shape, y1.shape)
- 它将x1,y1
视为定义一个meshgrid
,如表面。
但是我可以提取对角线,并获得与 Rbf 基本相同的值(除了两端):
In [329]: z1.diagonal()
Out[329]:
array([ 7.61803576e-18, 1.42857137e+00, 2.85714294e+00,
4.28571419e+00, 5.71428543e+00, 7.14285905e+00,
8.57142306e+00, 1.00000000e+01, 1.14287955e+01,
1.28551995e+01, 1.41778962e+01, 1.54127554e+01,
8.99313361e+00, 1.60000000e+01, 1.60000000e+01])
因此,使用 Rbf
您可以准确指定希望其插入值的位置,而 interp2d
您可以指定该值的 x,y
坐标二维空间。
关于python - python中不同维度数组的二维插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32432316/
我想知道当动画结束或被中断时如何在旋转动画中获取当前角度/度数? 我的想法是当点击某个按钮时动画被打断时,旋转将逆时针方向(当前流向是顺时针方向),从被打断时的最后一个角度/度开始。 我试过使用 ap
我正在尝试使用 TYPE_ACCELEROMETER 传感器获取手机角度。我的目标是仅在手机倾斜后获取角度值。它有效,但问题是当我 Handlebars 机正面朝上放在 table 上时,它仍然说 i
以下代码显示为问号而不是度数符号: var airF = Math.round(Number(MDTMOBILE.RWISWeather[i].AirTemp)) + "\u00B0" + "F";
我使用 css 3D-transform rotateY 翻转带有 css transition 的 div。我希望图像翻转一定次数:当转换结束时,我再次触发它直到达到某个计数器值。 我想做什么:当
我正在开发一个 map 应用程序的插件,它有很多类,有大量的单位选项。我觉得我在维护模型内的顺序方面有很好的处理能力。例如,Angle 类具有 Degrees 和 Radians 的属性并自动相互更新
我有一个栅格,是从 netcdf 中获得的(Lambert Conic Conformal projection): library(meteoForecast) wrf_tempor
我在 mapView 的叠加层上有一组项目。 我知道大多数对象的顶部/底部/左侧/右侧位置。 我想使用 zoomToSpan() 方法来放大该区域。 用这种方法计算纬度/经度的正确方法是什么? 最佳答
给你一个具有 100 万个顶点的最大度数为 4 的简单图。 我们想找到一个最大独立子集。 一般情况下是NP难的。 度数最大为 4 的事实是否提供了计算它的有效解决方案? 最佳答案 进一步阅读维基百科页
我是一名优秀的程序员,十分优秀!