
NumPy的核心是ndarray对象。一方面,Ndarray对象封装了可以包含相同数据类型的多维数组;另一方面,为获得更好的性能, 在ndarray上的 *** 作都是在编译过的代码上执行的。此外,和Python自身的序列对象相比,两者之间有如下不同:
1. NumPy数组的大小是固定的。Python的List是可以动态增长的。改变NumPy的大小会重新创建一个新的数组并把原来的删掉。
2. NumPy数组中的元素一定是同一类型的。(相应地,每个元素所占的内存大小也是一样的。)例外情况是:(不是特别理解:one can have arrays of (Python, including NumPy) objects, thereby allowing for arrays of different sized elements.)
3. NumPy数组支持在大量数据上进行数学计算和其他类型的 *** 作。通常情况下,与Python自带的序列类型相比,NumPy数组上的 *** 作执行更高效,代码量也更少。
4. 越来越多的Python科学计算包都是用到了NumPy的数组;虽然这些库支持Python序列类型的输入,但是内部 *** 作还是要先将其转换为NumPy的数组类型,而且输出通常就是NumPy数组。所以,如果你想要高效地使用这些Python的科学计算包,仅仅知道Python内建的序列类型是不够的,你还需要知道如何使用NumPy数组。
最后,NumPy完全支持面向对象的范式。例如,ndarray是一个类,它拥有许多方法和属性。它的许多方法都映射到了最外层的NumPy命名空间的函数里。这样一来,就可以给程序员更多的自由:程序员可以自由选者是面向对象的方式还是面向过程的方式使用这些接口。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)