在python中对2d numpy数组进行下采样
我在自学python,发现了一个需要对特征向量进行下采样的问题。我需要一些帮助来了解如何对数组进行向下采样。在数组中,每一行通过从在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
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的答案。