python三维线性插值_python-使用线性插值调整numpy ndarray的大小

假设我想使用线性插值将形状数组(100,100,100)调整为形状数组(57,57,57).

基本上,我需要一个函数,该函数采用形状为S的n维数组,并通过内插将其变换为不带有维数但形状为S’的数组.

是否有一种简单快速的方法来用numpy和scipy做到这一点?

我发现了诸如1d插值,2d插值,网格插值之类的东西,但是它们需要线性空间,而我并不是很了解.

解决方法:

您可以使用scipy.interpolate中的griddata方法

from scipy.interpolate import griddata

可以说您的3D阵列由以下公式给出:

array3d

您将需要重塑数据并使用原始索引或点坐标创建另一个数组

N=100

array3DAux = array3D.reshape(N**3)

# ijk is an (N**3,3) array with the indexes of the reshaped array.

ijk = mgrid[0:N,0:N,0:N].reshape(3,N**3).T

现在,您可以创建要查找新的内插点的新网格.

#In your case 57 points

n = 57j

i,j,k = mgrid[0:N:n,0:N:n,0:N:n]

有3种最接近,线性和三次插值方法

如下

newArray3D_z0 = griddata(ijk,array3DAux,(i,j,k),method="nearest")

newArray3D_z1 = griddata(ijk,array3DAux,(i,j,k),method="linear")

newArray3D_z2 = griddata(ijk,array3DAux,(i,j,k),method="cubic")

在这种情况下,可以减小或增加3D阵列的大小.

希望能帮助到你

标签:scipy,arrays,python,numpy,interpolation

来源: https://codeday.me/bug/20191122/2056071.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值