python - 对 NumPy 数组进行上采样和插值

标签 python arrays numpy scipy interpolation

我有一个数组,类似于:

array = np.arange(0,4,1).reshape(2,2)

> [[0 1
    2 3]]

我想要对该数组进行上采样并插入结果值。我知道对数组进行上采样的一个好方法是使用:

array = eratemp[0].repeat(2, axis = 0).repeat(2, axis = 1)
[[0 0 1 1]
 [0 0 1 1]
 [2 2 3 3]
 [2 2 3 3]]

但我无法找到一种方法来插入值以消除数组每个 2x2 部分之间的“ block 状”性质。

我想要这样的东西:

[[0 0.4 1 1.1]
 [1 0.8 1 2.1]
 [2 2.3 3 3.1]
 [2.1 2.3 3.1 3.2]]

类似这样的东西(注意:这些不是确切的数字)。我知道可能无法插入这个特定的二维网格,但是在我的答案中使用第一个网格,在上采样过程中应该可以进行插值,因为您正在增加像素数量,因此可以“填补空白” '。

我对插值的类型不太在意,只要最终输出是平滑的表面!我尝试使用 scipy.interp2d 方法但无济于事,如果有人可以分享他们的智慧,我将不胜感激!

最佳答案

您可以使用SciPy interp2d进行插值,您可以找到文档here .

我对文档中的示例进行了一些修改:

from scipy import interpolate
x = np.array(range(2))
y = np.array(range(2))
a = np.array([[0, 1], [2, 3]])
f = interpolate.interp2d(x, y, a, kind='linear')

xnew = np.linspace(0, 2, 4)
ynew = np.linspace(0, 2, 4)
znew = f(xnew, ynew)

如果你打印 znew 它应该看起来像这样:

array([[ 0.        ,  0.66666667,  1.        ,  1.        ],
       [ 1.33333333,  2.        ,  2.33333333,  2.33333333],
       [ 2.        ,  2.66666667,  3.        ,  3.        ],
       [ 2.        ,  2.66666667,  3.        ,  3.        ]])

关于python - 对 NumPy 数组进行上采样和插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41879104/

相关文章:

python - 如何使用正则表达式在字符串中查找字母及其相反的大小写?

javascript - 使用 jquery 创建按钮来打开和关闭数据子组 - 来自数据数组

java - 逻辑帮助 - 按升序查找一系列元素

python - 平方数Python时出现奇怪的错误

python - 根据行间变化的计算创建新列?

python - 如何在 python 编写的 while 语句中获取返回值?

python - django-rosetta 错误 : You can't use the CacheRosettaStorage

python - 如何使用单个反斜杠转义字符串的特殊字符

javascript - JavaScript 数组中的字符串

python - 从原始二进制图像数据到 Python 中的 PNG