Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2010 13:41:39

m1st
От:
Зарегистрирован: 2010-03-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование массива

Здравствуйте!

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



Офлайн

#2 Март 3, 2010 05:47:01

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование массива

Трудно что-либо посоветовать не посмотрев кода. Я бы создал пустной массив нужной размерности и копировал в него в цикле каждый слой (не забывая затем удалять их из памяти).

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

Если массив занимает много памяти - ищите на форуме недавно было отдельное обсуждение.



Офлайн

#3 Март 3, 2010 06:35:17

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Формирование массива

m1st
Пробовал формировать массив в цикле - на больших размерностях время выполнения переходит все разумные границы.
Там и расход памяти должен переходить все разумные границы. А нет возможности хранить на диске и обрабатывать кусками? Может подойдет PyTables?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано (Март 3, 2010 06:35:52)

Офлайн

#4 Март 3, 2010 09:34:57

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

Формирование массива

PooH +1. Там же рекурсия получается. У нас в Виннице тоже такое предприятие есть - “Геосистемы” называется. Спрошу как они снимки обрабатывают.

Офлайн

#5 Март 3, 2010 09:45:11

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Формирование массива

Можно попробовать, где это возможно, сделать код как можно более ленивым (использовать map вместо цикла, итераторы и генераторы вместо массивов).

Офлайн

#6 Март 3, 2010 10:20:40

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

Формирование массива

Спросил. Оказывается они там машины на ночь оставляют включенными(все!) и они целую ночь эти снимки колбасят. Используют самый лучший язык(по их мнению) - Делфи.

Офлайн

#7 Март 3, 2010 19:49:43

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование массива

да делфи нормальный язык, че вы его чмырите. Простой, быстрый, гуевый… для самописного софта состоящего из 1й функции чего еще желать +)



Офлайн

#8 Март 3, 2010 20:15:33

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Формирование массива

Он вообще вполне нормальный. Проблема в программистах в не в делфи. Да и дорого.
Топикстартеру - исследуй что так долго обрабатывается. Может есть смысл вынести в сишный модуль…

Офлайн

#9 Март 11, 2010 17:14:31

m1st
От:
Зарегистрирован: 2010-03-02
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Формирование массива

helm2004
Спросил. Оказывается они там машины на ночь оставляют включенными(все!) и они целую ночь эти снимки колбасят. Используют самый лучший язык(по их мнению) - Делфи.
Ровно та же фигня у компании в Москве, для которой я это делаю. Целая геоинформационная система на Делфи, причем, кажется, процедурном.

To All:
Разобрался, спасибо всем! Пошел в обход, и попутно нашел сокровище:) Оказывается, есть питоновские обертки для GDAL - библиотеки для обработки геоданных на C. Помимо того, что она умеет читать GeoTIFF (который, собственно, мне до того приходилось нарезать на слои и читать через PIL) с произвольным числом слоев, так еще и дала ускорение работы моего скрипта с 17.5 с на чтение до 1.4 с.



Офлайн

#10 Март 11, 2010 17:39:12

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Формирование массива

Viam supervadet vadens.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version