У меня есть данные с координатами x, y. Я пытаюсь следовать ответ на how to get a scatter dataset to be represented as a heatmap, но когда я иду черезMemoryError при работе Numpy Meshgrid
X, Y = np.meshgrid(x, y)
инструкция с моими массивами данных я получаю MemoryError
. Я новичок в numpy и matplotlib и по существу пытаюсь запустить это, адаптируя примеры, которые я могу найти.
Вот как я построил свои массивы из файла, который хранится их:
XY_File = open ('XY_Output.txt', 'r')
XY = XY_File.readlines()
XY_File.close()
Xf=[]
Yf=[]
for line in XY:
Xf.append(float(line.split('\t')[0]))
Yf.append(float(line.split('\t')[1]))
x=array(Xf)
y=array(Yf)
Есть проблема с моими массивами? Этот же код работал, когда помещался в this example, но я не слишком уверен.
Почему я получаю этот MemoryError и как я могу это исправить?
Это не связано с вашими проблемами с памятью (которые из-за того, что вы делаете * огромный * meshgrid из этих крошечных вещей), но наиболее подходящим для цикла над файлом является 'open ('XY_Output.txt', 'r'). как f: для строки в f: '. 'With' гарантирует, что файл закрывается * независимо от того, что * и цикл по файлу не позволяет ему сразу считывать память. (Это не проблема памяти здесь, но она по-прежнему бесполезна.) –
Спасибо за этот отзыв Майка, но это, похоже, не работает в Python 2.5, и это то, что я запускаю. (по крайней мере, это дает мне ошибку, заявляя, что «как» зарезервировано в python 2.6) Правильно ли я? Это гораздо более простой способ сделать это, это правда ... – greye
Вы можете добавить 'из __future__ import with_statement' вверху. Но вы все равно можете улучшить код, переместив оператор readlines в строку 'in line в XY_File.readlines()' и положив конец в конец. –