Есть ли альтернатива numpy.save(file, arr), которая будет работать с pypy?

У меня есть основная программа, работающая в pypy, которая создает три массива 2D numpy. Я хочу сохранить их в файл, а затем открыть их с помощью python и построить их с помощью matplotlib.pyplot.

В настоящее время pypy не работает с numpy.save, есть ли простой альтернативный метод сохранения группы массивов numpy в файл при использовании pypy?


person user1696811    schedule 19.11.2012    source источник


Ответы (3)


Библиотека pickle работает с pypy. Он, как я сохранил/загрузил массив numpy

import pickle 
import numpy

сохранить (используя pypy):

outfile1 = open(r'C:\pythontmp\numpyArray.pkl', 'w+b')
pickle.dump(numpyArray.tolist(), outfile1)
outfile1.close()

Загрузить (используя Python):

infile1 = open(r'C:\pythontmp\numpyArray.pkl', 'r+b')
file1 = pickle.load(infile1)                           # This is a list
infile1.close()

numpyArray = numpy.array(file1)                        # This is a numpy array
person user1696811    schedule 20.11.2012

Вы можете использовать ndarray.tofile () и numpy.fromfile(). Это лишает возможности перемещать данные между машинами с разным порядком байтов, но должно быть даже быстрее, чем save().

Пример:

a = numpy.zeros( (5,5) )
a.tofile('a.dat')
b = numpy.fromfile('a.dat')
person Alex I    schedule 19.11.2012
comment
tofile и fromfile также не поддерживаются pypy. - person tiago; 20.11.2012

Вы можете попробовать использовать модуль Python struct. В ответах здесь и здесь.

Другой вариант — использовать внешнюю библиотеку, например pyfits или pytables. Но я подозреваю, что они могут быть недоступны на pypy.

person tiago    schedule 20.11.2012