在python中对2d numpy数组进行下采样

在python中对2d numpy数组进行下采样,python,arrays,numpy,Python,Arrays,Numpy,我在自学python,发现了一个需要对特征向量进行下采样的问题。我需要一些帮助来了解如何对数组进行向下采样。在数组中,每一行通过从0到255的数字表示一个图像。我想知道你是如何将下采样应用于阵列的?我不想学习scikit,因为我想了解如何应用下采样。 如果你也能解释下采样,那就太棒了,谢谢 特征向量为400x250如果使用下采样意味着什么,则可以简单地对阵列进行切片。对于1D示例: import numpy as np a = np.arange(1,11,1) print(a) print(a

我在自学python,发现了一个需要对特征向量进行下采样的问题。我需要一些帮助来了解如何对数组进行向下采样。在数组中,每一行通过从
0
255
的数字表示一个图像。我想知道你是如何将下采样应用于阵列的?我不想学习
scikit
,因为我想了解如何应用下采样。 如果你也能解释下采样,那就太棒了,谢谢


特征向量为400x250

如果使用下采样意味着什么,则可以简单地对阵列进行切片。对于1D示例:

import numpy as np
a = np.arange(1,11,1)
print(a)
print(a[::3])
最后一行相当于:

print(a[0:a.size:3])
切片符号为
start:stop:step

结果:

[12345678910]

[1 4 7 10]

对于二维阵列,想法是相同的:

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) 
(400250)

(40250)


中还有许多其他示例,我假设您希望删除矩阵的每一行和每一列。下面是一个二维numpy阵列的简单示例:

import numpy as np
a=np.arange(0,16).reshape(4,4)
dc=a[:,range(0,a.shape[1],2)]
drdc=dc[range(0,a.shape[0],2),:]
print(a)
print(drdc)
输出为:

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]
 [12 13 14 15]]
[[ 0  2]
 [ 8 10]]

但是对于二维阵列,你是如何做到这一点的呢。但我不确定您希望对原始400x250阵列进行多大的采样?说“这不起作用”并没有多大帮助。什么不起作用?或者更好:您能否提供一个简单的示例,说明下采样应该如何工作(例如,从2D数组
[[0,1,…,9],[10,11,…,19]
,下采样数组应该包含元素
[[1,3,…],[11,13,…]
)?哪些项目应该保留?或者你提到你不想使用scikit学习,但它应该复制哪个例程?我不认为这能回答OP想问的问题。他的意思是。@Phan Nhat Huy,是的,现在(5-6年后)我也会对OP的问题做出不同的解释。请随意写一个更适合ML的答案。