Skip to content

从数值范围创建数组

NumPy 提供了几个便捷的函数来创建用数值序列初始化的数组。本章将探讨最常用的函数:numpy.arange、numpy.linspace 和 numpy.logspace。

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 通常是更好的选择。

看一些例子:

import numpy as np
# Create an array with values from 0 up to (but not including) 5
x = np.arange(5)
print(x)

输出:

[0 1 2 3 4]
import numpy as np
# Create an array with float values
x = np.arange(5, dtype=np.float64)
print(x)

输出:

[0. 1. 2. 3. 4.]
import numpy as np
# Create an array starting at 10, ending before 20, with a step of 2
x = np.arange(10, 20, 2)
print(x)

输出:

[10 12 14 16 18]

应用:arange 对于生成用于索引、迭代或定义具有固定步长坐标的序列非常有用。

更多详细信息,请参阅 官方 numpy.arange 文档。

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. ]
import numpy as np
# Generate 5 points, excluding the endpoint 20
x = np.linspace(10, 20, 5, endpoint=False)
print(x)

输出:

[10. 12. 14. 16. 18.]
import numpy as np
# Generate 5 points between 1 and 2, and get the step size
x, 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 函数创建一个数组,其中的数字在对数刻度上均匀间隔。你需要指定起始和结束指数以及基数(通常是 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)。

看这些例子:

import numpy as np
# Generate 10 samples from 10^1 to 10^2
a = 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. ]
import numpy as np
# Generate 10 samples from 2^1 to 2^10
a = np.logspace(1, 10, num=10, base=2.0)
print(a)

输出:

[ 2. 4. 8. 16. 32. 64. 128. 256. 512. 1024.]

应用:logspace 通常用于处理跨越多个数量级的数据,例如信号处理中的频率扫描或设置对数图的轴限制。

查阅 官方 numpy.logspace 文档 以获取更多详细信息。