У меня есть некоторые данные, представленные в 1300x1341 матрица. Я хотел бы разделить эту матрицу в нескольких частях (например, 9) так, чтобы я мог циклично выполниться и обработать их. Данные должны остаться заказанными в том смысле, что x [0,1] остается ниже (или выше если Вам нравится), x [0,0] и помимо x [1,1].
Точно так же, как при обработке изображений данных Вы могли бы потянуть 2 вертикальных и 2 горизонтальных строки по изображению для иллюстрирования этих 9 частей.
Если я использую numpys, изменяются (например, matrix.reshape (9,260,745) или любая другая комбинация 9,260,745), это не приводит к необходимой структуре, так как вышеупомянутое упорядочивание потеряно...
Я неправильно понимал изменять метод, или он может быть сделан этот путь?
Что другой pythonic/numpy путь там, чтобы сделать это?
Похоже, вам нужно использовать numpy.split ()
, документация которого находится здесь ... или возможно, его брат numpy.array_split ()
здесь . Они предназначены для разделения массива на равные части без переупорядочивания чисел, как это делает reshape,
Я не тестировал это, но что-то вроде:
numpy.array_split(numpy.zeros((1300,1341)), 9)
должно помочь.
reshape, цитируя его документацию,
Придает новую форму массиву без изменения его данных.
Другими словами, он вообще не перемещает данные массива - он просто влияет на размерность массива. Вы, с другой стороны, похоже, требуете нарезки; снова цитирую:
Можно нарезать и расслоить массивы для извлечения массивов одного и того же количества измерений, но разных размеров, чем исходные. Нарезка и расслоение работает точно так же как это делается для списков и кортежей за исключением того, что они могут быть применены к нескольких измерений.
Так, например, thearray[0:260, 0:745]
- это самая верхняя левая часть, thearray[260:520, 0:745]
- самая верхняя левая часть, и так далее. Вы можете иметь ссылки на различные части в списке (или дикте с соответствующими ключами), чтобы обрабатывать их отдельно.