跳至主要內容

NumPy 介绍

blacklad大约 3 分钟PythonPythonNumPy

NumPy介绍

NumPy 是 Python 中科学计算的基本包。它是一个 Python 库,提供了高性能的多维数组对象以及对数组进行各种快速操作,包括数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。

NumPy 官网

一、与python数组区别

  1. NumPy 数组在创建时具有固定大小,这与 Python 列表(可以动态增长)不同。更改数组的大小 ndarray将创建新数组并删除原始数组。
  2. NumPy 数组中的所有元素都必须是同一数据类型,因此在内存中的大小也相同。(例外情况是:对象数组)。
  3. NumPy 数组便于对大量数据进行高级数学和其他类型的运算。通常与使用 Python 的内置序列相比,此类运算执行起来更高效,代码也更少

越来越多的基于 Python 的科学和数学软件包正在使用 NumPy 数组。

例子

如果ab每个都包含数百万个数字, 循环里会一直动态增长数据的长度,导致效率非常差。

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 前都需要导入库

三、数组

在计算机编程中,数组是一种用于存储和检索数据的结构。我们经常将数组视为空间中的网格,每个单元格存储一个数据元素。

例如,如果数据的每个元素都是一个数字,我们可以将“一维”数组可视化为列表:

image-20240629220249133
image-20240629220249133

二维数组就像一张表:

image-20240629220259526
image-20240629220259526

三维数组就像一组表格,打印在不同的页面上一样堆叠在一起。

在 NumPy 中,这个想法被推广到任意数量的维度,因此基本数组类被称为`ndarray,它表示N 维数组

大多数 NumPy 数组都有一些限制。例如:

  • 数组的所有元素必须是同一类型的数据。
  • 一旦创建,数组的总大小就不能改变。
  • 形状必须是“矩形”,而不是“锯齿状”;例如,二维数组的每一行必须具有相同数量的列。
上次编辑于:
贡献者: blacklad