是否有 numpy.save(file, arr) 可以与 pypy 一起使用的替代方法?
Posted
技术标签:
【中文标题】是否有 numpy.save(file, arr) 可以与 pypy 一起使用的替代方法?【英文标题】:Is there an alternative to numpy.save(file, arr) that will work with pypy? 【发布时间】:2012-11-19 19:51:42 【问题描述】:我有一个在 pypy 中运行的主程序,它创建三个 2D numpy 数组。我想将这些保存到一个文件中,然后使用 python 打开它们并使用 matplotlib.pyplot 绘制它们。
目前 pypy 不适用于 numpy.save,是否有一种简单的替代方法可以在使用 pypy 时将一组 numpy 数组保存到文件中?
【问题讨论】:
【参考方案1】:库 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
【讨论】:
【参考方案2】:您也许可以使用ndarray.tofile() 和numpy.fromfile()。这失去了在具有不同字节序的机器之间移动数据的能力,但应该比 save() 更快。
例子:
a = numpy.zeros( (5,5) )
a.tofile('a.dat')
b = numpy.fromfile('a.dat')
【讨论】:
tofile
和 fromfile
也是 pypy 的 not supported。【参考方案3】:
您可以尝试使用 python 的struct 模块。答案here和here中有一些例子。
另一种选择是使用外部库,如 pyfits 或 pytables。但我怀疑它们可能在 pypy 上不可用。
【讨论】:
以上是关于是否有 numpy.save(file, arr) 可以与 pypy 一起使用的替代方法?的主要内容,如果未能解决你的问题,请参考以下文章