使用 python 在几何意义上缩放方阵
Scale square matrix in geometrical sense using python
我有一个具有实数值的矩阵 (ndarray),我想在几何意义上对其进行缩放 - 即扩大矩阵的大小,同时保持值尽可能相似。它可以看作是缩放图像。
但我的矩阵不是图像。我的实际值在 8,000 到 50,000 之间。据我所知,从通常的图像角度来看,这些值不能代表任何东西。
我在网上搜索了答案,但每个答案都建议使用 PIL 或类似的图像处理库,这些库使用不接受我的矩阵的标准像素值。
那么有没有办法在几何(或图像)意义上缩放包含任何实数的矩阵?
是否有 python 库或某种或类似的列表理解?
谢谢。
您所描述的是二维插值。 Scipy 在 scipy.interpolate.RectBivariateSpline
中提供了一个实现
from scipy.interpolate import RectBivariateSpline
# sample data
data = np.random.rand(8, 4)
width, height = data.shape
xs = np.arange(width)
ys = np.arange(height)
# target size and interpolation locations
new_width, new_height = width*2, height*2
new_xs = np.linspace(0, width-1, new_width)
new_ys = np.linspace(0, height-1, new_height)
# create the spline object, and use it to interpolate
spline = RectBivariateSpline(xs, ys, data) #, kx=1, ky=1) for linear interpolation
spline(new_xs, new_ys)
我有一个具有实数值的矩阵 (ndarray),我想在几何意义上对其进行缩放 - 即扩大矩阵的大小,同时保持值尽可能相似。它可以看作是缩放图像。
但我的矩阵不是图像。我的实际值在 8,000 到 50,000 之间。据我所知,从通常的图像角度来看,这些值不能代表任何东西。
我在网上搜索了答案,但每个答案都建议使用 PIL 或类似的图像处理库,这些库使用不接受我的矩阵的标准像素值。
那么有没有办法在几何(或图像)意义上缩放包含任何实数的矩阵?
是否有 python 库或某种或类似的列表理解?
谢谢。
您所描述的是二维插值。 Scipy 在 scipy.interpolate.RectBivariateSpline
from scipy.interpolate import RectBivariateSpline
# sample data
data = np.random.rand(8, 4)
width, height = data.shape
xs = np.arange(width)
ys = np.arange(height)
# target size and interpolation locations
new_width, new_height = width*2, height*2
new_xs = np.linspace(0, width-1, new_width)
new_ys = np.linspace(0, height-1, new_height)
# create the spline object, and use it to interpolate
spline = RectBivariateSpline(xs, ys, data) #, kx=1, ky=1) for linear interpolation
spline(new_xs, new_ys)