从数值范围创建数组
NumPy - 从数值范围创建数组
Section titled “NumPy - 从数值范围创建数组”NumPy 提供了几个便捷的函数来创建用数值序列初始化的数组。本章将探讨最常用的函数:numpy.arange、numpy.linspace 和 numpy.logspace。
numpy.arange
Section titled “numpy.arange”numpy.arange 函数返回一个包含指定区间内均匀间隔值的 ndarray。它类似于 Python 内置的 range 函数,但返回的是 NumPy 数组。
numpy.arange([start, ]stop, [step, ]dtype=None, *, like=None)关键参数:
| 参数 | 描述 |
|---|---|
| start | 可选。区间的起始值。如果未提供,默认为 0。 |
| stop | 区间的结束值。区间不包含此值,除非在 step 不是整数且浮点精度误差影响结果的某些情况下。 |
| step | 可选。连续值之间的间隔(步长)。默认为 1。 |
| dtype | 可选。数组元素所需的数据类型(data type)。如果未指定,NumPy 会根据其他输入参数推断类型(通常是 int64 或 float64)。 |
注意:由于浮点精度限制,为 step 参数使用浮点数有时可能导致意外结果。对于需要精确非整数步长的情况,numpy.linspace 通常是更好的选择。
看一些例子:
示例 1:基本用法
Section titled “示例 1:基本用法”import numpy as np
# Create an array with values from 0 up to (but not including) 5x = np.arange(5)print(x)输出:
[0 1 2 3 4]示例 2:指定数据类型
Section titled “示例 2:指定数据类型”import numpy as np
# Create an array with float valuesx = np.arange(5, dtype=np.float64)print(x)输出:
[0. 1. 2. 3. 4.]示例 3:指定 start、stop 和 step
Section titled “示例 3:指定 start、stop 和 step”import numpy as np
# Create an array starting at 10, ending before 20, with a step of 2x = np.arange(10, 20, 2)print(x)输出:
[10 12 14 16 18]应用:arange 对于生成用于索引、迭代或定义具有固定步长坐标的序列非常有用。
更多详细信息,请参阅 官方 numpy.arange 文档。
numpy.linspace
Section titled “numpy.linspace”numpy.linspace 函数在一个定义的区间内创建具有指定数量的均匀间隔值的数组。与 arange 不同,arange 定义步长,而 linspace 定义所需的元素总数。
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0)关键参数:
| 参数 | 描述 |
|---|---|
| start | 序列的起始值。 |
| stop | 序列的结束值。默认情况下,此值包含在数组中。 |
| num | 可选。要生成的均匀间隔样本数。默认为 50。 |
| endpoint | 可选。如果为 True(默认),stop 是最后一个样本。如果为 False,stop 不包含在内。 |
| retstep | 可选。如果为 True,返回一个元组 (samples, step),其中 step 是计算出的样本间距。 |
| dtype | 可选。输出数组的数据类型。如果未给出,则会推断(通常是 float64)。 |
看看 linspace 的实际应用:
示例 1:生成 10 到 20 之间的 5 个样本
Section titled “示例 1:生成 10 到 20 之间的 5 个样本”import numpy as np
# Generate 5 evenly spaced points between 10 and 20 (inclusive)x = np.linspace(10, 20, 5)print(x)输出:
[10. 12.5 15. 17.5 20. ]示例 2:排除结束点
Section titled “示例 2:排除结束点”import numpy as np
# Generate 5 points, excluding the endpoint 20x = np.linspace(10, 20, 5, endpoint=False)print(x)输出:
[10. 12. 14. 16. 18.]示例 3:返回步长
Section titled “示例 3:返回步长”import numpy as np
# Generate 5 points between 1 and 2, and get the step sizex, step = np.linspace(1, 2, 5, retstep=True)print(f"Array: {x}")print(f"Step size: {step}")输出:
Array: [1. 1.25 1.5 1.75 2. ]Step size: 0.25应用:linspace 非常适合生成用于函数绘图的样本点、创建坐标网格,或在需要某个范围内特定数量的元素时使用。
在 官方 numpy.linspace 文档 中查找更多信息。
numpy.logspace
Section titled “numpy.logspace”numpy.logspace 函数创建一个数组,其中的数字在对数刻度上均匀间隔。你需要指定起始和结束指数以及基数(通常是 10)。
numpy.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)关键参数:
| 参数 | 描述 |
|---|---|
| start | 起始指数:base ** start 是第一个值。 |
| stop | 结束指数:base ** stop 是最后一个值(如果 endpoint=True)。 |
| num | 可选。要生成的样本数。默认为 50。 |
| endpoint | 可选。如果为 True(默认),则包含 stop 指数。 |
| base | 可选。对数的基数。默认为 10.0。 |
| dtype | 可选。输出数组的数据类型。如果未给出,则推断(通常是 float64)。 |
看这些例子:
示例 1:默认基数 10
Section titled “示例 1:默认基数 10”import numpy as np
# Generate 10 samples from 10^1 to 10^2a = np.logspace(1.0, 2.0, num=10)print(a)输出(由于浮点表示,值可能略有不同):
[ 10. 12.91549665 16.68100537 21.5443469 27.82559402 35.93813664 46.41588834 59.94842503 77.42636827 100. ]示例 2:使用基数 2
Section titled “示例 2:使用基数 2”import numpy as np
# Generate 10 samples from 2^1 to 2^10a = np.logspace(1, 10, num=10, base=2.0)print(a)输出:
[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]应用:logspace 通常用于处理跨越多个数量级的数据,例如信号处理中的频率扫描或设置对数图的轴限制。
查阅 官方 numpy.logspace 文档 以获取更多详细信息。