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

用numpy和或scipy插入3D体积

秦宏硕
2023-03-14
问题内容

我非常沮丧,因为几个小时后,我似乎无法在python中执行看似简单的3D插值。在Matlab中,我要做的就是

Vi = interp3(x,y,z,V,xi,yi,zi)

使用scipy的ndimage.map_coordinate或其他numpy方法的确切含义是什么?

谢谢


问题答案:

在scipy
0.14或更高版本中,有一个scipy.interpolate.RegularGridInterpolator非常相似的新功能interp3

MATLAB命令Vi = interp3(x,y,z,V,xi,yi,zi)将转换为以下内容:

from numpy import array
from scipy.interpolate import RegularGridInterpolator as rgi
my_interpolating_function = rgi((x,y,z), V)
Vi = my_interpolating_function(array([xi,yi,zi]).T)

这是一个完整的例子,展示了两者。它将帮助您了解确切的区别…

MATLAB代码:

x = linspace(1,4,11);
y = linspace(4,7,22);
z = linspace(7,9,33);
V = zeros(22,11,33);
for i=1:11
    for j=1:22
        for k=1:33
            V(j,i,k) = 100*x(i) + 10*y(j) + z(k);
        end
    end
end
xq = [2,3];
yq = [6,5];
zq = [8,7];
Vi = interp3(x,y,z,V,xq,yq,zq);

结果就是Vi=[268 357]这两个点(2,6,8)和的值(3,5,7)

短代码:

from scipy.interpolate import RegularGridInterpolator
from numpy import linspace, zeros, array
x = linspace(1,4,11)
y = linspace(4,7,22)
z = linspace(7,9,33)
V = zeros((11,22,33))
for i in range(11):
    for j in range(22):
        for k in range(33):
            V[i,j,k] = 100*x[i] + 10*y[j] + z[k]
fn = RegularGridInterpolator((x,y,z), V)
pts = array([[2,6,8],[3,5,7]])
print(fn(pts))

再次是[268,357]。因此,您会看到一些细微的差异:Scipy使用x,y,z索引顺序,而MATLAB使用y,x,z(奇怪);在Scipy中,您可以在一个单独的步骤中定义一个函数,当您调用它时,坐标会按照(x1,y1,z1),(x2,y2,z2),…分组,而matlab使用(x1,x2
,. ),(y1,y2,…),(z1,z2,…)。

除此之外,两者相似并且易于使用。



 类似资料:
  • 我试图在我正在分发的包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我使用 它安装了SciPy 0.9。0和NumPy 1.5。1,而且效果很好。 我想使用-执行同样的操作,以便能够在设置中指定依赖项。我自己的包裹。 问题是,当我尝试时: 它很好用。 但是 惨败 我如何让它工作?

  • 问题内容: 我正在尝试在要分发的程序包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我同时使用 它安装了SciPy 0.9.0和NumPy 1.5.1,并且运行良好。 我想使用-做同样的事情,以便能够在我自己的包的setup.py中指定依赖项。 问题是,当我尝试: 它工作正常。 但是之后 惨败 我该如何工作? 问题答案: 我假设我的回答是Linux经验。我发现要顺利进行有三个先决条

  • 译者:cangyunye 作者: Adam Paszke 修订者: Adam Dziedzic 在这个教程里,我们要完成两个任务: 创建一个无参神经网络层。 这里需要调用numpy作为实现的一部分。 创建一个权重自主优化的伸进网络层。 这里需要调用Scipy作为实现的一部分。 import torch from torch.autograd import Function 无参数示例 这一层并

  • 我怎样才能导入阶乘函数分别从Numpy和sippy为了看看哪一个更快? 我已经通过导入数学从python本身导入了阶乘。但是,它不适用于Numpy和smpy。

  • 问题内容: 我正在尝试构建一个使用Python的gensim库2.1.0版的Docker应用程序,该库是通过pip从requirements.txt文件安装的。 但是,Docker似乎在安装numpy,scipy和gensim时遇到问题。我搜索了错误消息,并找到了在其他环境中遇到相同问题的其他用户。他们的许多解决方案似乎在Docker中不起作用。 以下是错误消息: 我正在使用图像。软件包的版本,以

  • 问题内容: 使用’numpy’或’scipy’(我没有使用’OpenCV’)我试图裁剪一个 图像中的区域。 有没有类似于“cropPolygon(image,vertices=[(1,2),(3,4)…])”的东西 还是SciPy`? 问题答案: 你在用matplotlib吗?我以前采用的一种方法是使用方法 的构造一个布尔掩码,然后 用于索引到图像数组中。 例如: Plotting: