Найти - Пользователи
Полная версия: Формирование массива
Начало » Python для новичков » Формирование массива
1
m1st
Здравствуйте!

Занимаюсь обработкой космических снимков, возникла такая проблема.
Необходимо объединить несколько отдельных слоев изображения в один массив. Каждый слой представляет собой Numpy-массив arr1, arr2 и т.п. размерностью (x,y). Необходимо, имея несколько таких массивов, получить массив arr размерности (x, y, n), т.е. склеить слои так, что arr = [arr1, arr2 …] (вектор).
Как сделать это максимально эффективно? Пробовал формировать массив в цикле - на больших размерностях время выполнения переходит все разумные границы.
asv13
Трудно что-либо посоветовать не посмотрев кода. Я бы создал пустной массив нужной размерности и копировал в него в цикле каждый слой (не забывая затем удалять их из памяти).

Есть еще “ускоритель” для numpy, хотя не уверен что поможет но попробовать можно - http://code.google.com/p/numexpr/

Если массив занимает много памяти - ищите на форуме недавно было отдельное обсуждение.
PooH
m1st
Пробовал формировать массив в цикле - на больших размерностях время выполнения переходит все разумные границы.
Там и расход памяти должен переходить все разумные границы. А нет возможности хранить на диске и обрабатывать кусками? Может подойдет PyTables?
helm2004
PooH +1. Там же рекурсия получается. У нас в Виннице тоже такое предприятие есть - “Геосистемы” называется. Спрошу как они снимки обрабатывают.
Ferroman
Можно попробовать, где это возможно, сделать код как можно более ленивым (использовать map вместо цикла, итераторы и генераторы вместо массивов).
helm2004
Спросил. Оказывается они там машины на ночь оставляют включенными(все!) и они целую ночь эти снимки колбасят. Используют самый лучший язык(по их мнению) - Делфи.
Zubchick
да делфи нормальный язык, че вы его чмырите. Простой, быстрый, гуевый… для самописного софта состоящего из 1й функции чего еще желать +)
Ferroman
Он вообще вполне нормальный. Проблема в программистах в не в делфи. Да и дорого.
Топикстартеру - исследуй что так долго обрабатывается. Может есть смысл вынести в сишный модуль…
m1st
helm2004
Спросил. Оказывается они там машины на ночь оставляют включенными(все!) и они целую ночь эти снимки колбасят. Используют самый лучший язык(по их мнению) - Делфи.
Ровно та же фигня у компании в Москве, для которой я это делаю. Целая геоинформационная система на Делфи, причем, кажется, процедурном.

To All:
Разобрался, спасибо всем! Пошел в обход, и попутно нашел сокровище:) Оказывается, есть питоновские обертки для GDAL - библиотеки для обработки геоданных на C. Помимо того, что она умеет читать GeoTIFF (который, собственно, мне до того приходилось нарезать на слои и читать через PIL) с произвольным числом слоев, так еще и дала ускорение работы моего скрипта с 17.5 с на чтение до 1.4 с.
Ferroman
Viam supervadet vadens.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB