NumPy 用户手册
什么是 NumPy
在 Python 体系中,NumPy 是一个科学计算领域的基础组件。几乎可以这么说,没有 NumPy 就没有今天庞大的 Python 科学计算帝国。它提供了一套多维度数组的实现,多维数组的一些变种以及一套数组操作的方法。这些方法中有数学,逻辑,维度,排序,选择,输入输出,离散傅立叶变换,线性代数,统计,随机模拟等等。
NumPy 的核心是一个叫做`ndarray`的对象。它是由 n 维同类型的数据,加上对应的一组高性能操作组成的。NumPy 的数组和 Python 的序列之间有几个重要的不同点:
NumPy 的数组是固定大校的,任何改变大小的行为都会重新创建一个新的数组,同时删除旧的数组。而 Python 的序列是动态增长的。
NumPy 中的基本类型数据必需是相同类型的,也就是在内存中要占用相同的大小。一个例外是对象类型和 Python 的序列相同,是可以存储不同大小的对象。
NumPy 可以比较容易的对大量数据进行高级数学等的一些操作,这些操作同时也会非常高效和简洁
NumPy 被大量的科学计算和数学库使用,仅仅会使用 Python 的序列是不够的,同时必需要会使用 NumPy
序列的大小和计算的速度在科学计算中是非常重要的。举一个简单的例子,假设一个一维的数组和另一个相同长度的数组对应元素相乘。如果使用两个 Python 的 list(a 和 b)来实现,代码如下:
这段代码产生正确的结果,但是如果 a 和 b 每个都包含百万级别的数字,我们通过 Python 去循环计算的开销就太大了,如果我们使用 C 语言去完成相同的任务,开销会降低很多
这段代码去掉了 Python 解释器解释和操作 Python 对象的开销,但是是以牺牲了 Python 编码的诸多好处为代价的。如果我们去增加数据的维度,比如变为两个维度,就有
NumPy 则同时具备这两种优点:简洁直观的标准模式和类似与 C 语言一样快速的计算速度:
事实上 NumPy 的方式更为简洁。这个例子展示了 NumPy 的两个基本的特点:向量化和传播。
评论