首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带掩蔽阵列的ndimage map_coordinates

带掩蔽阵列的ndimage map_coordinates
EN

Stack Overflow用户
提问于 2014-06-18 18:02:45
回答 2查看 1K关注 0票数 1

我正在使用ndimage插值如下:

代码语言:javascript
复制
ndimage.map_coordinates(input_data, coords, output, 2, prefilter=False)

现在,问题是我对整个输入数据没有有效的度量。因此,我有一个蒙面数组,它告诉我哪些数据点是有效的。因此,在进行插值时,我只使用有效的像素,并相应地调整权重(以确保权重之和为1)。

不过,我觉得这是不容易做到的。我想知道是否有人知道这样做的好方法,或者可以向我指出一些我可以使用的库或代码。我来自于一个C++背景,所以我仍然能在python中找到我的方向。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-18 19:50:19

听起来,您需要专注于数据的插值,然后从所需的坐标中提取值。对于一维斯克莱普和2D 双份是您需要检查的插值函数(很好的概述)。这两个函数都可以被加权,并提供对你插值的样条函数的微调控制。

使用所需的权重对数据进行过滤之后,就可以使用以下方法在指定的坐标处确定值。

代码语言:javascript
复制
ndimage.map_coordinates(input_data, coords, output, prefilter=True)

注意,不需要prefilter关键字参数,因为这是默认值

票数 1
EN

Stack Overflow用户

发布于 2020-05-28 06:32:12

您可以使用scipy.interpolate.griddata从任意已知的数据点获取内插值。这个例子

代码语言:javascript
复制
import numpy as np
from scipy.interpolate import griddata

# data array
a = np.arange(9).reshape((3,3)).astype(float)
a[1, 1] = np.nan
print(a)
a = a.flatten()

# coordinate arrays
ii, jj = np.indices((3,3))
ij = np.stack((ii.flatten(), jj.flatten()), axis=1)

# filter out unknowns
mask = ~np.isnan(a)
a = a[mask]
ij = ij[mask]

# interpolate for the missing a[1, 1] element
res = griddata(ij, a, (1, 1), method='cubic')
print(res)

产生

代码语言:javascript
复制
[[ 0.  1.  2.]
 [ 3. nan  5.]
 [ 6.  7.  8.]]

4.000000157826586
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24292227

复制
相关文章

相似问题

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