Python / Numpy:分割数组

时间:2010-05-05 13:34:12

标签: python numpy

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

如果我使用numpys reshape(例如matrix.reshape(9,260,745)或9,260,745的任何其他组合),由于上述排序丢失,它不会产生所需的结构......

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

还有什么其他的pythonic / numpy方法呢?

2 个答案:

答案 0 :(得分:5)

听起来您需要使用numpy.split(),其中包含文档here ...或者其兄弟numpy.array_split() here。它们用于将数组拆分成相等的子部分,而无需重新排列数字,例如重塑数据,

我没有测试过这个,但是有点像:

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

应该这样做。

答案 1 :(得分:2)

重塑,引用其docs

  

为数组提供新形状   改变其数据。

换句话说,它根本不会移动数组的数据 - 它只会影响数组的维度。另一方面,你似乎需要slicing;再次引用:

  

可以切片和跨步   用于提取相同数组的数组   尺寸数量,但不同   尺寸比原来的。切片   和跨步的工作完全一样   它为列表和元组做的方式   除了他们可以申请   多个维度。

所以例如thearray[0:260, 0:745]是“最左上角,thearray[260:520, 0:745]左上角的中间部分,等等。你可以引用列表中的各个部分(或dict)用适当的键)来单独处理它们。