是否有 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')

【讨论】:

tofilefromfile 也是 pypy 的 not supported。【参考方案3】:

您可以尝试使用 python 的struct 模块。答案here和here中有一些例子。

另一种选择是使用外部库,如 pyfits 或 pytables。但我怀疑它们可能在 pypy 上不可用。

【讨论】:

以上是关于是否有 numpy.save(file, arr) 可以与 pypy 一起使用的替代方法?的主要内容,如果未能解决你的问题,请参考以下文章

Python Numpy中数据的常用的保存与读取方法

numpy.save() 是不是总是将列表转换为数组?

使用 numpy 保存列表时内存不足

Numpy用于数组的文件输入输出

从使用 numpy.save(...) 保存的文件中将 numpy 数组加载到 C 中

在追加模式下加载使用 numpy.save 保存的数组