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

标签 python arrays python-3.x numpy resize

我正在尝试通过将每个元素按比例重复到新大小来在 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.]])

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

关于python - 如何将数组上采样到任意大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57177262/

相关文章:

python - 是否可以在虚拟开发环境中使用 matplotlib 打开图像?

python - pickle 依赖失败

python - 我在 python 中分别导入和加载图像数据时遇到问题

arrays - 在matlab中对齐两个数组

python - 在 Python 中检测 OHLC 数据中的模式

python - 查看页面源代码时发现抓取代码

python - 读取 csv 文件 - 一个列表中的每个字符

ios - Objective-C:NSArray与NSMutableArray的格式

javascript - 合并对象数组

python - 带有 brew 的 macOS python3,导入 cv2 时出错