2014-02-10 67 views
1

我对numpy比较陌生,但已经开始使用它来读写h5文件。我有图像数据,我计算了一些区域统计数据,将给定区域中的每个像素值读入h5文件。但是,我有很多像素值(可能是数千万),并且希望对这些数据进行二次采样,以便我能够减小数据大小,但保留数据的一般分布。subsample numpy数组?

我想知道是否有一个简单的方法来取样每个数组的第200个值?

我会提出我已经有的代码,但我的代码只能读取我现有的数据 - 我完全卡在我如何子样本,所以没有什么可以显示到目前为止。

感谢

+0

你的问题是有点不清楚;你关心的是磁盘上的大小还是内存中的大小?如果你不关心磁盘空间;您可以从h5文件读取切片视图。这仍然会很慢,因为您仍然需要从磁盘读取所有内容。然而,二次取样最好通过对所有像素进行求和来完成;否则你可能会得到令人讨厌的锯齿伪影。如果磁盘空间没有异议,则可以在h5文件中存储整个mipmap。这将提供最佳的性能和质量,但会增加而不是减少磁盘空间的使用。 –

回答

8

您可以使用数组切片:

>>> import numpy as np 
>>> a = np.eye(1000) 
>>> a[::200, ::200] 

array([[ 1., 0., 0., 0., 0.], 
     [ 0., 1., 0., 0., 0.], 
     [ 0., 0., 1., 0., 0.], 
     [ 0., 0., 0., 1., 0.], 
     [ 0., 0., 0., 0., 1.]])