matplotlib.pcolor очень медленно. альтернативы? - PullRequest
8 голосов
/ 19 сентября 2011

Я хочу построить 2D-массив (примерно 1000x1000) со значениями, соответствующими цветовой шкале. Поэтому я использовал matplotlib.pcolor, который сделал именно это, но по какой-то причине он очень медленный, когда достигает этих измерений (например, 2 минуты или около того, чтобы просто построить). В чем причина этого? Преобразование значений с плавающей точкой в ​​int16 или около того поможет? Есть ли альтернатива pcolor?

from pylab import *

data=genfromtxt('data.txt',autostrip=True, case_sensitive=True)
pcolor(data,cmap='hot')
colorbar()
show()

data.txt содержит массив. Процесс загрузки занимает несколько секунд, но основное время вычислений определенно используется ОБА функцией pcolor () и show () (примерно 60-90 секунд каждая).

Ответы [ 2 ]

10 голосов
/ 17 августа 2015

В качестве примечания для будущих гуглеров также есть pcolormesh и pcolorfast.

Документация для pcolormesh гласит:

pcolormesh похож на pcolor (), но использует другой механизм и возвращает другой объект; pcolor возвращает PolyCollection, но pcolormesh возвращает QuadMesh. Это намного быстрее, так что это почти всегда предпочтительнее для больших массивов.

imshow должен быть еще быстрее, но немного менее гибок в отношении, например, не прямолинейные оси.

См. на этой странице для хорошего сравнения между pcolor, pcolormesh и imshow.

9 голосов
/ 19 сентября 2011

imshow будет намного быстрее.pcolor возвращает PolyCollection, которая будет довольно медленной с миллионом элементов, тогда как imshow - это просто изображение.

Обратите внимание, что индексирование в pcolor немного отличается от imshow, хотя вам может и не понадобитьсябеспокоиться об этом в зависимости от того, как вы использовали pcolor.Кроме того, часто при переходе от pcolor к imshow каждый хочет установить interpolation="nearest" в imshow (но для таких больших изображений это тоже может не иметь значения).

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