Python PyPy与高效数组

Python PyPy与高效数组,python,arrays,numpy,pypy,Python,Arrays,Numpy,Pypy,我的项目目前使用NumPy,仅用于内存效率高的阵列(布尔、uint8、uint16、uint32) 我想让它在不支持NumPy的PyPy上运行。(无论如何,安装失败) 所以我想知道:在Python中有没有其他内存有效的方法来存储数字数组?PyPy支持什么?派比有自己的东西吗 注意:array.array不是一个可行的解决方案,因为在我的测试中,它使用的内存比NumPy多得多。array.array是一个内存高效的阵列。它将字节/字等打包在一起,因此整个阵列的额外开销只有几个字节 numpy可以使

我的项目目前使用NumPy,仅用于内存效率高的阵列(布尔、uint8、uint16、uint32)

我想让它在不支持NumPy的PyPy上运行。(无论如何,安装失败)

所以我想知道:在Python中有没有其他内存有效的方法来存储数字数组?PyPy支持什么?派比有自己的东西吗

注意:array.array不是一个可行的解决方案,因为在我的测试中,它使用的内存比NumPy多得多。

array.array是一个内存高效的阵列。它将字节/字等打包在一起,因此整个阵列的额外开销只有几个字节

numpy可以使用更少内存的一个地方是当您有一个稀疏数组(并且正在使用其中一个稀疏数组实现)时

如果您没有使用稀疏数组,那么您只是测量错误


array.array也没有压缩bool类型,因此您可以将其作为
array.array('I')
bytearray()
的包装器来实现,甚至只使用Python long的位掩码pypypypy附带的
numpypy
(这是numpy的克隆,但仍然缺少特性)另一个必须问的问题是,为什么要使用pypy?您是否可以先进行其他更简单的优化?您当前的性能瓶颈是什么?谢谢JBernardo。numpypy似乎很适合我的需要。:)至于我为什么要使用PyPy,我有一个用Python编写的服务器应用程序,我希望它能运行良好。我过去使用过Psyco,发现它极大地提高了性能。我可以用C重写部分或全部内容,但我不愿意。bytearray对于8位数字来说既快速又紧凑。根据您的需要,还有
cffi
,您可以在其中声明和使用C类型的数组或小型C结构的数组。要测量内存,我尝试用随机数据初始化一个非常大的数组,并查看Python使用的RAM。我以前在生产中也使用了array.array,当我转换为numpy时发现RAM使用减少了50-70%。数组可能是稀疏的,我估计,在任何给定的时间,它们大概有75%是空的。