7.1 NumPy概述

NumPy是Python中科学计算最基础的库。多维数组对象是NumPy中的基础数据类型,由多维数组对象派生出掩码数组和矩阵。此外,NumPy在这些数组上定义了各种运算,例如形状改变、数组排序、离散傅里叶变换,随机模拟等。这些运算快速高效,极大地提高了Python科学计算的效率。虽然Python标准库中提供了数组(array)类型,可以通过import array来使用,然而由于其只支持一维数组及运算效率低等缺点,并没有得到广泛应用。

NumPy包的核心是ndarray对象,也称为NumPy数组。NumPy数组和标准Python序列之间有几个重要的区别:

  1. NumPy数组一旦创建,固定大小:Python中的列表数据对象类型支持动态增长。若要对一个NumPy数组大小进行改变,则会创建一个新的数组来代替原数组,同时删除原数组。

  2. NumPy数组中的元素类型必须相同。

  3. NumPy数组可以对大量数据进行科学计算以及一些操作

  4. NumPy数组便于对大量数据进行高等数学以及其他类型的操作。与使用Python的内置序列对象类型相比,定义在NumPy数组上的操作执行起来效率更高。同时,NumPy也大大降低了编程的难度,使用NumPy库进行开发所需要编写代码往往更少。

主流的python的数据科学软件包均采用NumPy数组,且越来越多的软件包也逐渐加入了NumPy数组;虽然数据科学软件包支持python序列输入,但它们在处理数据序列数据前有一个共同特点:将这些序列对象转换为NumPy数组对象后在对数据进行处理,且常以NumPy数组的形式对这些数据进行输出。可以毫不夸张地说,如果只懂得Python的内置对象类型,而不懂得操纵NumPy数组,就无法有效地使用Python语言完成数据科学任务!

在数据科学中,计算速度快慢经常关系着科学研究或工程项目的成败。因为Python是一种解释语言,在代码运行过程中,解释器对Python代码进行逐行解释,而不需要像C语言一样进行编译,所以Python代码运行速度相较C语言等慢。这也就造成了,对Python内置对象类型进行逐元素操作(如逐元素赋值),是十分花费时间的。而NumPy却巧妙的克服了对Python内置对象类型进行操作的效率问题,通过使用C语言预编译的大量NumPy数组操作,使数组对象操作更加迅速。

NumPy完全支持面向对象的方法,再次从ndarray开始。例如,ndarray是一个类,拥有许多方法和属性。它的许多方法都将函数映射到最外层的NumPy名称空间中,使程序员可以完全自由地按照自己喜欢的范式编写代码,并且/或者按照手边的任务最合适的范式编写代码。

NumPy为我们提供了两种方法的最佳效果:当涉及ndarray时,元素对元素的操作是“默认模式”,但是元素对元素的操作由预编译的C代码快速执行。

7.1.2 安装NumPy

我们可以使用Conda命令或者pip命令对NumPy安装:

conda install numpy

pip instal numpy

NumPy安装完毕后,就可以导入使用了,通常我们使用np作为NumPy的别名

import numpy as np

Last updated