NumPy 教程

NumPy 首页 NumPy 简介 NumPy 环境

数组

NumPy Ndarray 对象 NumPy 数据类型

创建和操作数组

NumPy 数组创建例程 NumPy 数组操作 NumPy 基于现有数据创建数组 NumPy 基于数值范围创建数组 NumPy 数组迭代 NumPy 重塑数组 NumPy 连接数组 NumPy 堆叠数组 NumPy 拆分数组 NumPy 展平数组 NumPy 转置数组

索引与切片

NumPy 索引 &切片 NumPy 索引 NumPy 切片 NumPy 高级索引 NumPy 高级索引 NumPy 字段访问 NumPy 使用布尔数组切片

数组属性与操作

NumPy 数组属性 NumPy 数组形状 NumPy 数组大小 NumPy 数组步长 NumPy 数组元素大小 NumPy 广播 NumPy 算术运算 NumPy 数组加法 NumPy 数组减法 NumPy 数组乘法 NumPy 数组除法

高级数组运算

NumPy 交换数组的轴 NumPy 字节交换 NumPy 副本和视图 NumPy 逐元素数组比较 NumPy 过滤数组 NumPy 连接数组 NumPy 排序、搜索& 计数函数 NumPy 搜索数组 NumPy 数组并集 NumPy 查找唯一行 NumPy 创建日期时间数组 NumPy 二元运算符 NumPy 字符串函数 NumPy 矩阵库 NumPy 线性代数 NumPy Matplotlib NumPy 使用 Matplotlib 绘制直方图

排序和高级操作

NumPy 数组排序 NumPy 沿轴排序 NumPy 使用花式索引进行排序 NumPy 结构化数组 NumPy 创建结构化数组 NumPy 操作结构化数组 NumPy 记录数组 NumPy 加载数组 NumPy 保存数组 NumPy 将值附加到数组 NumPy 交换列数组 NumPy 将轴插入数组

处理缺失数据

NumPy 处理缺失数据 NumPy 识别缺失值 NumPy 移除缺失数据 NumPy 插补缺失值数据

性能优化

NumPy 使用数组进行性能优化

线性代数

NumPy 线性代数 NumPy 矩阵库 NumPy 矩阵加法 NumPy 矩阵减法 NumPy 矩阵乘法 NumPy 逐元素矩阵运算 NumPy 点积 NumPy 矩阵求逆 NumPy 行列式计算 NumPy 特征值 NumPy 特征向量 NumPy 奇异值分解 NumPy 求解线性方程 NumPy 矩阵范数

元素级矩阵运算

NumPy 总和 NumPy 平均值 NumPy 中位数 NumPy 最小值 NumPy 最大值

集合运算

NumPy 唯一元素 NumPy 交集 NumPy 并集 NumPy 差集

随机数生成

NumPy 随机数生成器 NumPy 排列和重排 NumPy 均匀分布 NumPy 正态分布 NumPy 二项分布 NumPy 泊松分布 NumPy 指数分布 NumPy 瑞利分布 NumPy 逻辑分布 NumPy 帕累托分布 NumPy 使用 Seaborn 可视化分布 NumPy 多项分布 NumPy 卡方分布 NumPy Zipf 分布

文件输入 &输出

NumPy 使用 NumPy 进行 I/O NumPy 从文件读取数据 NumPy 将数据写入文件 NumPy 支持的文件格式

数学函数

NumPy 数学函数 NumPy 三角函数 NumPy 指数函数 NumPy 对数函数 NumPy 双曲函数 NumPy 舍入函数

傅里叶变换

NumPy 离散傅里叶变换 (DFT) NumPy 快速傅里叶变换 (FFT) NumPy 逆傅里叶变换 NumPy 傅里叶级数和变换 NumPy 信号处理应用 NumPy 卷积

多项式

NumPy 多项式表示 NumPy 多项式运算 NumPy 求多项式的根 NumPy 求多项式的根

统计

NumPy 统计函数 NumPy 描述性统计

日期时间函数

NumPy 日期和时间基础知识 NumPy 表示日期和时间 NumPy 日期和时间运算 NumPy 使用日期时间进行索引 NumPy 时区处理 NumPy 时间序列分析 NumPy 处理时间增量 NumPy 闰秒处理 NumPy 矢量化日期时间运算

ufunc

NumPy ufunc 简介 NumPy 创建通用函数 (ufunc) NumPy 算术通用函数 (ufunc) NumPy 小数舍入 ufunc NumPy 对数通用函数(ufunc) NumPy 求和通用函数 (ufunc) NumPy 乘积通用函数 (ufunc) NumPy 差分通用函数 (ufunc) NumPy 寻找最小公倍数 (LCM) NumPy 寻找最大公约数 (GCD) NumPy 三角函数 (ufunc) NumPy 双曲线 (ufunc) NumPy 集合运算(ufunc)

实用资源

NumPy 快速指南 NumPy 备忘单


NumPy - 数组创建例程

创建 NumPy 数组

我们可以使用 Python NumPy 库提供的各种函数创建 NumPy 数组。此包提供了一个多维数组对象以及各种其他必要的对象和例程,以实现高效的功能。以下是创建 NumPy 数组所需的函数 -

  • 使用 numpy.array() 函数
  • 使用 numpy.zeros() 函数
  • 使用 numpy.ones() 函数
  • 使用 numpy.arange() 函数
  • 使用 numpy.linspace() 函数
  • 使用 numpy.random.rand() 函数
  • 使用 numpy.empty() 函数
  • 使用 numpy.full() 函数
与 Python 列表不同,NumPy 数组支持元素级操作,并且更节省内存,非常适合进行数学计算。

使用 numpy.array() 函数

我们可以使用使用 numpy.array() 函数,通过将 Python 列表或元组作为参数传递给该函数来创建数组。

此函数将输入数据(如列表、元组等)转换为 ndarray(NumPy 数组)。语法如下:-

numpy.array(object, dtype=None, copy=True, order='K', subok=False, ndmin=0, like=None)

示例:创建一维 NumPy 数组

在以下示例中,我们使用 numpy.array() 函数从整数列表创建一维 NumPy 数组:-

import numpy as np

# 从列表创建一维数组
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)

print("一维数组:", my_array)

以下是得到的输出 -

一维数组:[1 2 3 4 5]

示例:创建二维 NumPy 数组

在这里,我们使用 numpy.array() 函数从列表列表创建一个二维 NumPy 数组 -

import numpy as np

# 从列表列表创建二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("二维数组:
", arr)

这将产生以下结果 -

二维数组:
[[1 2 3]
[4 5 6]]

使用 numpy.zeros() 函数

我们还可以使用 numpy.zeros() 函数创建数组,只需指定所需的数组形状为元组或整数即可。

此函数创建一个填充零的 NumPy 数组。它接受数组的形状作为参数,并可选地接受数据类型 (dtype)。默认情况下,数据类型为 float64。语法如下:-

numpy.zeros(shape, dtype=float, order='C')

示例

在本例中,我们创建一个包含 5 个元素的 NumPy 数组,所有元素均使用 numpy.zeros() 函数初始化为零。-

import numpy as np

# 创建一个零数组
arr = np.zeros(5)
print(arr)

以上代码的输出如下:-

[0. 0. 0. 0. 0.]

使用 numpy.ones() 函数

另一方面,numpy.ones() 函数创建一个所有元素都设置为 1 的数组。它接受三个主要参数:shapedtypeorder

  • shape 参数可以是整数或整数元组,用于定义数组的维度。
  • dtype 参数指定数组元素所需的数据类型,如果未提供,则默认为"float64"。
  • order 参数确定数组的内存布局,可以是行优先(C 语言风格)或列优先(Fortran 语言风格),默认为"C"。

语法如下:

numpy.ones(shape, dtype=None, order='C')

示例:创建一维 1 数组

在下面的示例中,我们将创建一个包含 3 个元素的一维 NumPy 数组,所有元素均使用 numpy.ones() 函数初始化为 1 -

import numpy as np

# 创建一个 1 数组
arr = np.ones(3)
print(arr)

执行上述代码后,我们得到以下输出 -

[1. 1. 1.]

示例:创建全 1 的二维数组

在这里,我们使用 np.ones() 函数创建一个 2 行 3 列的二维 NumPy 数组,所有元素均为 1 -

import numpy as np

# 创建全 1 的二维数组
array_2d = np.ones((4, 3))
print(array_2d)

结果如下 -

[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]

示例:创建一个 Fortran 排序的 1 数组

现在,我们使用 np.ones() 函数,以 Fortran 风格(列优先)排序,创建一个 2 行 3 列的二维 NumPy 数组,所有元素均为 1 -

import numpy as np

# 创建 Fortran 排序的 1 数组
array_F = np.ones((4, 3), order='F')
print(array_F)

我们得到如下所示的输出 -

[[1. 1. 1.][1. 1. 1.][1. 1. 1.][1. 1. 1.]]

使用 numpy.arange() 函数

numpy.arange() 函数通过根据指定的起始值、终止值和步长生成数字序列来创建数组。它类似于 Python 的内置 range() 函数。

此函数创建一个在给定间隔内等距分布的数组。它允许指定起始值、终止值和步长,并返回一个 NumPy 数组。

  • start − 序列的起始值。如果未指定,则默认为 0。

  • stop − 序列的结束值。此值不包含在序列中。

  • step − 序列中每对连续值之间的步长或间隔。如果未指定,则默认为 1。

以下是语法 -

numpy.arange([start,] stop[, step,] dtype=None, *, like=None)

示例

在下面的示例中,我们首先创建一个从 0 到 9 的 NumPy 数组"array1"。然后,我们使用 np.arange() 函数创建另一个数组"array2",其值从 1 到(但不包括)10,步长为 2 -

import numpy as np

# 仅提供停止值
array1 = np.arange(10)
print("array1:", array1)

# 提供起始值、终止值和步长值
array2 = np.arange(1, 10, 2)
print("array2:",array2)

以下是得到的输出 −

array1: [0 1 2 3 4 5 6 7 8 9]
array2: [1 3 5 7 9]

使用 numpy.linspace() 函数

我们甚至可以使用 numpy.linspace() 函数通过指定起始值、终止值和所需的元素数量来创建数组。

此函数创建的数组由指定间隔内均匀分布的值组成。该函数接受起始值、终止值和元素数量的参数,并生成在起始值和终止值之间(含起始值和终止值)均匀分布的值。以下是语法 -

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)

当您需要在两个端点之间设置一定数量的点来进行绘图或数值计算时,numpy.linspace() 函数特别有用。

示例

在下面的示例中,我们使用 numpy.linspace() 函数创建三个具有指定范围和配置的数组(array1、array2 和 array3)。

"array1"由 10 个等距值组成,范围从 0 到 5(含 0 和 5)。 "array2"由 5 个值组成,范围从 1 到略小于 2,不包括端点。"array3"由 5 个值(范围从 0 到 10)创建,并返回数组以及连续值之间的步长 -

import numpy as np

# 创建一个包含 10 个值(范围从 0 到 5)的数组
array1 = np.linspace(0, 5, num=10)
print("array1:",array1)

# 创建一个包含 5 个值(范围从 1 到 2,不包括端点)的数组
array2 = np.linspace(1, 2, num=5, end=False)
print("array2:",array2)

# 创建一个数组并返回步长
array3, step = np.linspace(0, 10, num=5, retstep=True)
print("array3:",array3)
print("步长:", step)

这将产生以下结果 -

array1: [0.          0.55555556 1.11111111 1.66666667 2.22222222 2.77777778
3.33333333 3.88888889 4.44444444 5.         ]
array2: [1.   1.2 1.4 1.6 1.8]
array3: [ 0.   2.5 5.   7.5 10. ]
步长: 2.5

使用 random.rand() 函数

或者,我们可以使用 numpy.random.rand() 函数,通过指定数组的维度作为参数来创建数组。

此函数用于创建一个指定形状的数组,该数组填充从 [0, 1) 上的均匀分布中采样的随机值。

它接受数组维度的参数(例如 numpy.random.rand(rows, columns)),并生成一个指定形状的数组,其中包含 0 到 1 之间的随机值。如果没有提供参数,则返回一个随机浮点值。语法如下:-

numpy.random.rand(d0, d1, ..., dn)

示例

在以下示例中,我们使用 numpy.random.rand() 函数生成不同维度的随机浮点数数组:-

import numpy as np

# 生成单个随机浮点数
random_float = np.random.rand()
print("random_float:",random_float)

# 生成一维随机浮点数数组
array_1d = np.random.rand(5)
print("array_1d:",array_1d)

# 生成二维随机浮点数数组浮点数
array_2d = np.random.rand(2, 3)
print("array_2d:",array_2d)

# 生成一个随机浮点数的三维数组
array_3d = np.random.rand(2, 3, 4)
print("array_3d:",array_3d)

以下是上述代码的输出 -

random_float: 0.5030496450079744
array_1d: [0.19476581 0.54430648 0.64571106 0.27443774 0.71874319]
array_2d: [[0.91141582 0.58847504 0.37284854]
 [0.0715398  0.21305363 0.766954  ]]
array_3d: [[[0.7295106  0.1582053  0.91376381 0.14099229]
  [0.6876814  0.19351871 0.18056163 0.61370308]
  [0.42382443 0.6665121  0.42322218 0.11707395]]
[[0.60883975 0.01724199 0.95753734 0.17805716]
  [0.47770594 0.55840874 0.7375783  0.50512301]
  [0.73730351 0.85900855 0.16472072 0.2338285 ]]]

使用 numpy.empty() 函数

我们可以使用 numpy.empty() 函数创建一个 NumPy 数组,并将数组的形状指定为参数。

此函数初始化数组但不初始化其元素;数组的内容是任意的,并且可能会有所不同。当您需要一个特定大小和数据类型的数组,但打算稍后用数据填充它时,它非常有用。以下是语法:

numpy.empty(shape, dtype=float, order='C')
与 numpy.zeros() 函数和 numpy.ones() 函数(它们分别将数组元素初始化为零和一)不同,numpy.empty() 函数不会初始化元素。相反,它会分配数组所需的内存,而不设置任何值。

示例

在此示例中,我们使用 numpy.empty() 函数创建一个包含 2 行 3 列的二维数组 (empty_array) -

import numpy as np

empty_array = np.empty((2, 3))
print(empty_array)

获得的输出如下所示 -

[[1.13750619e-313 0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000 0.00000000e+000]]

与 numpy.zeros() 不同,此函数使用未初始化的值初始化数组,这些值可以是内存中剩余的任何随机数据,因此适用于不需要立即初始化的情况。

使用 numpy.full() 函数

使用 numpy.full() 函数,我们可以创建一个具有所需形状的数组,并将其中的所有元素设置为特定值。语法如下:-

numpy.full(shape, fill_value, dtype=None, order='C')

示例

在下面的示例中,我们使用 numpy.full() 函数创建一个维度为 2x3 的二维数组,并全部填充值 5:-

import numpy as np

array1 = np.full((2, 3), 5)
print(array1)

执行上述代码后,我们得到以下输出:-

[[5 5 5]
[5 5 5]]

用于NumPy 数组的创建

NumPy 模块中,有多种创建 NumPy 数组的方法,包括基本创建方法、通过重塑和修改数据创建、使用序列创建以及使用随机函数创建。以下是用于创建 NumPy 数组的不同函数 -

基本数组创建

以下是创建数组的基本函数 -

Sr.No. 功能 &说明
1 array()

用于创建 NumPy 数组

2 asarray()

将输入转换为数组

3 asanyarray()

将输入转换为 ndarray,但传递 ndarray 子类至

4 copy()

返回给定对象的数组副本

使用特定形状和数据创建数组

以下是用于创建具有指定形状和数据的数组的函数 -

Sr.No. 函数 &说明
1 zeros()

返回一个给定形状和类型的新数组,并用零填充

2 ones()

返回一个给定形状和类型的新数组,并用一填充

3 empty()

返回一个给定形状和类型的新数组,但不初始化元素

4 full()

返回一个具有给定形状和类型的新数组,并使用 fill_value 进行填充

使用序列创建数组

以下是用于创建带有序列的数组的函数 -

Sr.No. 函数 &说明
1 arange()

返回给定区间内等距的值

2 linspace()

返回指定区间内等距的数字。

3 logspace()

返回对数尺度上等距的数字。

特殊数组

以下是创建数组的特殊函数 -

Sr.No. 函数 &说明
1 eye()

返回一个二维数组,对角线上为 1,其他位置为 0

2 identity()

返回恒等数组。

3 diag()

提取对角线或构建对角数组

4 fromfunction()

通过在每个坐标上执行函数来构建数组

5 fromfile()

根据文本或二进制文件中的数据构建数组

随机数组

以下是创建数组的随机函数 -

Sr.No. 函数 &说明
1 random.rand()

给定形状的随机值

2 random.randn()

返回标准正态分布的样本

3 random.randint()

返回从低(含)到高的随机整数(独占)

4 random.random()

返回半开区间 [0.0, 1.0) 内的随机浮点数

5 random.choice()

从给定的一维数组生成随机样本

结构化数组

以下是用于创建数组的结构化函数 -

序号 功能与说明
1 zeros_like()

返回一个由零元素组成的数组,其形状和类型与给定数组相同

2 ones_like()

返回一个由一元素组成的数组,其形状和类型与给定数组相同。

3 empty_like()

返回一个新数组,其与给定数组具有相同形状和类型

4 full_like()

返回与给定数组具有相同形状和类型的完整数组