Python / Numpy: разделить массив - PullRequest
5 голосов
/ 05 мая 2010

У меня есть некоторые данные, представленные в матрице 1300x1341. Я хотел бы разбить эту матрицу на несколько частей (например, 9), чтобы я мог выполнить цикл и обработать их. Данные должны быть упорядочены в том смысле, что x [0,1] остается ниже (или выше, если хотите) x [0,0] и помимо x [1,1].
Так же, как если бы вы представляли данные, вы можете нарисовать 2 вертикальные и 2 горизонтальные линии над изображением, чтобы проиллюстрировать 9 частей.

Если я использую numpys reshape (например, matrix.reshape (9,260,745) или любую другую комбинацию 9,260,745), это не приведет к требуемой структуре, так как вышеупомянутый порядок потерян ...

Я неправильно понял метод изменения формы или это можно сделать таким образом?

Какой еще способ питона / наглости это сделать?

Ответы [ 2 ]

5 голосов
/ 05 мая 2010

Похоже, вам нужно использовать numpy.split(), в котором есть документация здесь ... или, возможно, его брат numpy.array_split() здесь . Они предназначены для разбиения массива на равные подразделы без перестановки чисел, как это делает reshape,

Я не проверял это, но что-то вроде:

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

должен сделать трюк.

2 голосов
/ 05 мая 2010

изменить, чтобы процитировать его документы ,

Придает новую форму массиву без изменяя свои данные.

Другими словами, он вообще не перемещает данные массива - он просто влияет на размерность массива . С другой стороны, вам, кажется, требуется нарезка ; снова цитирую:

Можно нарезать и шагать массивы для извлечения массивов одного и того же количество измерений, но разных размеры, чем оригинал. Нарезка и шагает точно так же как это происходит для списков и кортежей за исключением того, что они могут быть применены к также несколько измерений.

Так, например, thearray[0:260, 0:745] - это «крайняя левая верхняя часть», thearray[260:520, 0:745] верхняя левая часть центральной части и т. Д. Вы можете иметь ссылки на различные части в списке (или указывать с помощью соответствующих клавиш) обрабатывать их отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...