我的项目目前使用NumPy,仅用于内存高效的数组(bool_,uint8,uint16,uint32)。
我想让它在不支持NumPy的PyPy上运行。 (无论如何都无法安装)
所以我想知道:有没有其他内存有效的方法来存储Python中的数字数组? PyPy支持的任何东西? PyPy有什么属于自己的吗?
注意:array.array不是一个可行的解决方案,因为它在我的测试中使用了比NumPy更多的内存。
答案 0 :(得分:3)
array.array 是一个内存高效的数组。它将字节/字等组合在一起,因此整个数组只有几个字节的额外开销。
numpy可以使用更少内存的地方是当你有一个稀疏数组(并使用其中一个稀疏数组实现)时
如果您没有使用稀疏数组,则只是测量错误。
array.array也没有打包的bool类型,因此您可以将其实现为array.array('I')
或bytearray()
的包装,或者甚至只使用Python long的位掩码