NumPy 介绍
大约 3 分钟PythonPythonNumPy
NumPy介绍
NumPy 是 Python 中科学计算的基本包。它是一个 Python 库,提供了高性能的多维数组对象以及对数组进行各种快速操作,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。
一、与python数组区别
- NumPy 数组在创建时具有固定大小,这与 Python 列表(可以动态增长)不同。更改数组的大小
ndarray
将创建新数组并删除原始数组。 - NumPy 数组中的所有元素都必须是同一数据类型,因此在内存中的大小也相同。(例外情况是:对象数组)。
- NumPy 数组便于对大量数据进行高级数学和其他类型的运算。通常与使用 Python 的内置序列相比,此类运算执行起来更高效,代码也更少。
越来越多的基于 Python 的科学和数学软件包正在使用 NumPy 数组。
例子
如果a
和b
每个都包含数百万个数字, 循环里会一直动态增长数据的长度,导致效率非常差。
c = []
for i in range(len(a)):
c.append(a[i]*b[i])
而使用 NumPy 只需要一行代码,而且 NumPy 内部还会一次性创建好需要长度的数组,效率也比较高。
c = a * b
矢量化
矢量化是指代码中不存在任何显式循环、索引等。
- 矢量化代码更简洁,更易读
- 代码行数越少,错误就越少
- 代码更接近标准数学符号(通常可以更容易地正确编码数学结构)
- 矢量化可产生更“Python 化”的代码。如果没有矢量化,我们的代码将充斥着低效且难以阅读的
for
循环
广播
一般来说,在 NumPy 中,所有操作(不仅是算术运算,还有逻辑运算、按位运算、函数运算等)都以这种隐式逐元素方式运行,即它们广播。
二、安装
使用 pip
进行安装。
pip install numpy
安装后,尝试导入 NumPy 库,如果没有错误提示,表示安装成功。
import numpy as np
每次使用 NumPy 前都需要导入库
三、数组
在计算机编程中,数组是一种用于存储和检索数据的结构。我们经常将数组视为空间中的网格,每个单元格存储一个数据元素。
例如,如果数据的每个元素都是一个数字,我们可以将“一维”数组可视化为列表:

二维数组就像一张表:

三维数组就像一组表格,打印在不同的页面上一样堆叠在一起。
在 NumPy 中,这个想法被推广到任意数量的维度,因此基本数组类被称为`ndarray,它表示N 维数组。
大多数 NumPy 数组都有一些限制。例如:
- 数组的所有元素必须是同一类型的数据。
- 一旦创建,数组的总大小就不能改变。
- 形状必须是“矩形”,而不是“锯齿状”;例如,二维数组的每一行必须具有相同数量的列。