- NumPy 教程
- 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 - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O
- 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 编译器
- NumPy - 快速指南
- 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
# Creating a 1D array from a list
my_list = [1, 2, 3, 4, 5]
my_array = np.array(my_list)
print("1D Array:", my_array)
以下是获得的输出:
1D Array: [1 2 3 4 5]
示例:创建二维 NumPy 数组
在这里,我们使用 numpy.array() 函数从列表的列表创建一个二维 NumPy 数组:
import numpy as np
# Creating a 2D array from a list of lists
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("2D Array:\n", arr)
这将产生以下结果:
2D Array: [[1 2 3] [4 5 6]]
使用 numpy.zeros() 函数
我们还可以使用numpy.zeros()函数通过将数组的所需形状指定为元组或整数来创建数组。
此函数创建一个填充零的 NumPy 数组。它接受数组的形状作为参数,以及可选的数据类型 (dtype)。默认情况下,数据类型为float64。以下是语法:
numpy.zeros(shape, dtype=float, order='C')
示例
在此示例中,我们使用 numpy.zeros() 函数创建一个包含 5 个元素的 NumPy 数组,所有元素都初始化为零:
import numpy as np # Creating an array of zeros arr = np.zeros(5) print(arr)
以下是上述代码的输出:
[0. 0. 0. 0. 0.]
使用 numpy.ones() 函数
另一方面,numpy.ones() 函数创建一个所有元素都设置为 1 的数组。它接受三个主要参数:shape、dtype 和order。
- shape参数(可以是整数或整数元组)定义数组的维度。
- dtype参数指定数组元素所需的类型,如果未提供,则默认为“float64”。
- order参数确定数组的内存布局,可以是行主序 (C 样式) 或列主序 (Fortran 样式),其中 'C' 为默认值。
以下是语法:
numpy.ones(shape, dtype=None, order='C')
示例:创建一维全 1 数组
在下面的示例中,我们使用 numpy.ones() 函数创建一个包含 3 个元素的一维 NumPy 数组,所有元素都初始化为 1:
import numpy as np # Creating an array of ones arr = np.ones(3) print(arr)
执行上述代码后,我们得到以下输出:
[1. 1. 1.]
示例:创建二维全 1 数组
在这里,我们使用 np.ones() 函数创建一个包含 2 行 3 列的二维 NumPy 数组,并填充 1:
import numpy as np # Creating 2D array of ones 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 # Creating Fortran-ordered array of ones 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
# Providing just the stop value
array1 = np.arange(10)
print("array1:", array1)
# Providing start, stop and step value
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”创建了从 0 到 5(包括端点)的 10 个均匀间隔的值。“array2”包含 5 个从 1 到略小于 2 的值,不包括端点。“array3”创建了 5 个从 0 到 10 的值,并返回数组和连续值之间的步长大小:
import numpy as np
# Creating an array of 10 evenly spaced values from 0 to 5
array1 = np.linspace(0, 5, num=10)
print("array1:",array1)
# Creating an array with 5 values from 1 to 2, excluding the endpoint
array2 = np.linspace(1, 2, num=5, endpoint=False)
print("array2:",array2)
# Creating an array and returning the step value
array3, step = np.linspace(0, 10, num=5, retstep=True)
print("array3:",array3)
print("Step size:", 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. ] Step size: 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
# Generating a single random float
random_float = np.random.rand()
print("random_float:",random_float)
# Generating a 1D array of random floats
array_1d = np.random.rand(5)
print("array_1d:",array_1d)
# Generating a 2D array of random floats
array_2d = np.random.rand(2, 3)
print("array_2d:",array_2d)
# Generating a 3D array of random floats
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]]