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

时间:2015-12-11 19:37:42

标签: python arrays numpy

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

特征向量为400x250

2 个答案:

答案 0 :(得分:17)

如果使用下采样意味着like this,则可以简单地对数组进行切片。对于一维示例:

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

最后一行相当于:

start:stop:step

将切片表示法设为b = np.arange(0,100) c = b.reshape([10,10]) print(c[::3,::3])

结果:

  

[1 2 3 4 5 6 7 8 9 10]

     

[1 4 7 10]

对于2D阵列,想法是一样的:

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

这为您提供了两个维度中原始数组中的每三个项目。

或者,如果您只想对单个维度进行采样:

TextBlock
  

(400,250)

     

(40,250)

the Numpy manual

中有很多其他例子

答案 1 :(得分:0)

我假设您要删除矩阵的所有其他行和列。这是一个简单的2-D numpy数组示例:

end()

输出结果为:

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)