Skip to main content
 首页 » 编程设计

python之如何将数组上采样到任意大小

2025年05月04日20think

我正在尝试通过将每个元素按比例重复到新大小来在 Python 中将数组的大小调整为更大的大小。但是,我希望能够调整为任意大小。

我知道我可以用 numpy.repeat 来做到这一点,例如,如果我必须将大小加倍,但假设我想转换一个大小为 (180,150) 到 (300,250)。我知道没有完美的方法可以做到这一点,但我正在寻找最有效(信息损失最少)的方法!

到目前为止,我是将数组转换为图像并相应地调整其大小,然后再次将其转换为数组。但是,似乎我无法将所有类型的数据都转换为图像,因此我需要一种通用的方法来执行此操作。

例如,假设我有一个大小为 (2,2) 的输入数组:

input_array=np.array([[1,2],[3,4]])

如果我想把它转换成一个(3,3)数组,输出可能是这样的:

output_array=np.array([[1,1,2],[1,1,2],[3,3,4]])

就像我之前说的,我只是不想平铺或填充零,我想通过重复一些元素来扩大尺寸。

请您参考如下方法:

如果不清楚您希望获得的最终结果,您的问题会打开多个路径和解决方案。仅举几例:

  1. 使用numpy.resize :
import numpy as np 
 
input_array=np.array([[1.,2],[3,4]]) 
 
np.resize(input_array, (3,3)) 

你得到:

array([[1., 2., 3.], 
       [4., 1., 2.], 
       [3., 4., 1.]]) 
  1. 使用cv2.resize :
import cv2 
import numpy as np 
 
input_array=np.array([[1.,2],[3,4]]) 
 
cv2.resize(input_array, 
           (3,3), 
           interpolation=cv2.INTER_NEAREST) 

你得到:

array([[1., 1., 2.], 
       [1., 1., 2.], 
       [3., 3., 4.]]) 

根据您的目标,您可以使用不同的插值方法。