Python/Numpy:数组除法
我有一些数据,存储在一个1300行和1341列的矩阵里。我想把这个矩阵分成几块(比如9块),这样我就可以逐块处理这些数据。数据需要保持顺序,比如x[0,1]要在x[0,0]的下面(或者上面,如果你喜欢的话),而且要在x[1,1]的旁边。
就像你把这些数据想象成一张图片,你可以在这张图片上画两条竖线和两条横线,把它分成9个部分。
如果我用numpy的reshape方法(比如matrix.reshape(9,260,745)或者其他组合的9,260,745),这样做并不能得到我想要的结构,因为之前提到的顺序就丢失了……
我是不是误解了reshape这个方法,还是说可以用这种方式实现?
还有什么其他的python/numpy方法可以做到这一点呢?
2 个回答
2
reshape,简单来说,就是给一个数组换个形状,但不改变里面的数据。
换句话说,它不会移动数组里的数据,只是改变数组的维度。
而你似乎需要的是切片,再引用一下:
你可以通过切片和步长来提取出维度相同但大小不同的数组。切片和步长的用法和列表、元组是一样的,只不过它们可以应用于多个维度。
举个例子,thearray[0:260, 0:745]
是“左上角的部分”,thearray[260:520, 0:745]
是“左中间的部分”,依此类推。你可以把这些不同的部分放在一个列表里(或者用字典和合适的键),这样就可以单独处理它们。