在python中对二维numpy数组进行降采样

hl0ma9xz  于 2023-03-18  发布在  Python
关注(0)|答案(3)|浏览(281)

我正在自学python,发现了一个需要对特征向量进行降采样的问题。我需要一些帮助来理解如何对数组进行降采样。在数组中,每行通过从0255的数字来表示一个图像。我想知道你如何对数组应用降采样?我不想使用scikit-learn,因为我想了解如何应用降采样。如果你也能解释下采样,那就太棒了,谢谢。
特征向量是400 × 250

rdlzhqv9

rdlzhqv91#

如果下采样意味着like this,您可以简单地对数组进行切片。

import numpy as np
a = np.arange(1,11,1)
print(a)
print(a[::3])

最后一行相当于:

print(a[0:a.size:3])

切片符号为start:stop:step
结果:
[ 1 2 3 4 5 6 7 8 9 10]
[ 1 4 7 10]
对于2D阵列,其思想是相同的:

b = np.arange(0,100)
c = b.reshape([10,10])
print(c[::3,::3])

这将在两个维度上为您提供原始数组中的每三个项目。
或者,如果只想向下取样单个维:

d = np.zeros((400,250))
print(d.shape)
e = d[::10,:]
print(e.shape)

(400,二百五十页)
(40,二百五十页)
the Numpy manual中还有许多其他示例

pkwftd7m

pkwftd7m2#

从skimage.measure导入block_reduce
新矩阵=块缩减(下采样矩阵,块大小=(m,n),函数=np.平均值/np.最大值/..)

bsxbgnwa

bsxbgnwa3#

from skimage.measure import block_reduce

b = block_reduce(matrix, block_size=(m, n), func=np.mean/np.max/..)

相关问题