与常规Python列表相比,NumPy有什么优势?
我大约有100个金融市场系列,我将创建一个100x100x100 = 1百万个单元的多维数据集阵列。我将每个x与y和z回归(3变量),以用标准误差填充数组。
我听说对于“大型矩阵”,出于性能和可伸缩性的原因,我应该使用NumPy而不是Python列表。事实是,我知道Python列表,它们似乎对我有用。
如果我转到NumPy,会有什么好处?
如果我有1000个序列(即立方体中有10亿个浮点单元)怎么办?
NumPy的数组比Python列表更紧凑-您在Python中描述的列表列表至少需要20 MB左右,而单元格中具有单精度浮点数的NumPy 3D数组则需要4 MB。使用NumPy可以更快地读取和写入项目。
也许您只关心一百万个单元格就不会那么在意,但您肯定会关心十亿个单元格-这两种方法都不适合32位体系结构,但是如果使用64位版本,NumPy可以节省大约4 GB的内存,仅Python就需要至少约12 GB(很多指针的大小加倍),这是一个昂贵得多的硬件!
差异主要是由于“间接性”所致-Python列表是指向Python对象的指针的数组,每个指针至少4个字节,即使最小的Python对象也至少包含16个字节(类型指针为4,引用计数为4,类型为4值-内存分配器舍入为16)。NumPy数组是统一值的数组-单精度数字每个占用4个字节,双精度数字每个占用8个字节。灵活性较差,但您需要为标准Python列表的灵活性付出巨大的代价!
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。