我正在尝试通过将每个元素按比例重复到新大小来在 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]])
就像我之前说的,我只是不想平铺或填充零,我想通过重复一些元素来扩大尺寸。
最佳答案
如果不清楚您希望获得的最终结果,您的问题会打开多个路径和解决方案。仅举几例:
- 使用
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.]])
- 使用
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/