我的项目目前仅使用 NumPy 用于内存高效的数组(bool_、uint8、uint16 和 uint32)。
我想在不支持 NumPy 的 PyPy 上运行它。(无法安装它,无论如何)
因此,我想知道:是否有其他内存高效的方法来在 Python 中存储数字数组?任何 PyPy 支持的方法?PyPy 是否具有自己的方法?
注意:array.array 不是可行的解决方案,因为在我的测试中它比 NumPy 使用更多的内存。
array.array是一种内存高效的数组。它将字节/单词等打包在一起,因此整个数组只有少量额外开销。
唯一可以使用更少内存的地方是当您拥有稀疏数组并且正在使用其中一种稀疏数组实现时,NumPy可以使用更少的内存。
如果您没有使用稀疏数组,则只是错误地测量了它。
array.array也没有打包的bool类型,所以您可以将其实现为array.array('I')
或bytearray()
的包装器,甚至可以使用Python long的位掩码。
cffi
,在其中您可以声明和使用C类型数组或小型C结构的数组。 - Armin Rigo
numpypy
(它是numpy的一个克隆品,但仍然缺少某些功能)。 - JBernardo