发布网友 发布时间:2022-04-21 20:15
共1个回答
热心网友 时间:2022-04-07 12:48
NumPy是Python科学计算的基础包。它提供了*数组对象、基于数组的各种派生对象(例如,masked Array, 矩阵)。除此之外,还提供了各种各样的加快数组操作的例程,包括数学基本计算、逻辑、图形操作、排序、选择、输入输出,离散傅立叶变换、基础线性代数、基础统计操作、随机仿真等等。
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命名空间的函数里。这样一来,就可以给程序员更多的自由:程序员可以自由选者是面向对象的方式还是面向过程的方式使用这些接口。