我有一些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)用适当的键)来单独处理它们。