提问人:P. Scotty 提问时间:3/20/2023 更新时间:3/20/2023 访问量:107
如何使用 python 对 2 维数组进行下采样?
How to downsample a 2 dimensions array using python?
问:
我正在尝试使用 python 重建一个项目,其中一步需要我将一个二维数组下采样到一个较小的数组中。
像这样的数组:
[[1.0, 2.0, 1.0, 3.0, ..., 2.0]
[2.0, 4.0, 6.0, 8.0, ..., 3.0]
...
[3.0, 1.0, 6.0, 2.0, ..., 9.0]]
(举个例子)
我想将其下采样为较小的,但保留其功能。我不擅长深度学习,只是想从中扩展一些概念。我尝试用零外部填充数组(填充 = 1),卷积核大小为 3x3。但是我发现这种方式不能将数组放大到更小,所以我将步幅改为2(代码:for j in range(1, EMatrix.shape[0]-1, 2)),但是这导致新数组包含一些零行和列,我不知道如何处理。
我的代码(部分):
from shapely.geometry import box
from shapely.geometry import MultiPoint
import matplotlib.pyplot as plt
import numpy as np
import math
from sklearn import preprocessing
def Down_Sample(EMatrix):
"""
Description:
Parameters: EMatrix (Type: 2-dim array)
Return:
"""
# EMatrix = preprocessing.scale(EMatrix)
EMatrix = np.pad(EMatrix, (1, 1), 'constant')
DownSampleMatrix = np.empty((EMatrix.shape[0]-2, EMatrix.shape[1]-2), dtype=float)
for j in range(1, EMatrix.shape[0]-1, 2):
for i in range(1, EMatrix.shape[1]-1, 2):
DownSampleMatrix[j-1][i-1] = max(EMatrix[j-1][i-1], EMatrix[j-1][i], EMatrix[j-1][i+1], \
EMatrix[j][i-1], EMatrix[j][i], EMatrix[j][i+1], \
EMatrix[j+1][i-1], EMatrix[j+1][i], EMatrix[j+1][i+1])
return DownSampleMatrix
我找到了一个答案:在python中对2d numpy数组进行下采样,但它的方法似乎不适合我的场景。
如果 sklearn 或其他软件包中有现成的方法,任何方法都可以。
答: 暂无答案
评论