2010-05-05 26 views
4

我有一些以1300x1341矩阵表示的数据。我想将这个矩阵分成几部分(例如9),以便我可以循环并处理它们。数据需要保持有序,因为x [0,1]保持在下面(或者如果你喜欢的话),x [0,0]和x [1,1]之外。
就像您对图像进行成像一样,您可以在图像上绘制2条垂直线和2条水平线来说明9个部分。Python/Numpy:Divide array

如果我使用numpys重塑(如matrix.reshape(9260745)或9260745任何其他组合),它不会得到所需要的结构,因为上述顺序丢失......

我误解重塑方法还是可以这样做?

还有什么其他python/numpy的方式来做到这一点?

回答

4

听起来像你需要使用numpy.split()其文档here ...或者其兄弟numpy.array_split()here。他们是分裂的数组分成相等的小节,而无需重新排列号码,如不整形,

我没有测试过这一点,但这样的:

numpy.array_split(numpy.zeros((1300,1341)), 9) 

应该做的伎俩。

+0

这似乎是做我想做的。谢谢 – BandGap 2010-05-05 16:04:32

2

重塑,引用其docs

提供了一种新的形状的阵列,而不改变 其数据。

换句话说,它不围绕在所有移动阵列的数据 - 它只是影响到阵列的尺寸。另一方面,你似乎需要slicing;再次引用:

是可能的切片和步幅 阵列提取相同 维数的数组,但不同大小 比原来的。切片 和striding的工作方式与 的方式完全相同 对列表和元组 的作用方式不同,除了它们也可以应用于 多维。

因此,例如thearray[0:260, 0:745]是“左上端的部分,thearray[260:520, 0:745]左上角的中心部分,等等。你可以在列表中有到各个部件的引用(或具有相应键字典),以分别处理它们

+0

切片当然总是一种选择,但我有一种感觉numpy可能有一些东西在这个目的上... – BandGap 2010-05-05 16:05:32