具有复杂步长的 numpy 数组切片是什么意思?
What does a numpy array slice with complex step size mean?
我在 numpy docs 中遇到了一个示例,其中有一个示例在切片内具有复杂的步长(参见第二个示例)。
通过实验,我可以看出它在做什么;它类似于 np.linspace
.
In [42]: np.r_[-1:1:1j]
Out[42]: array([-1.])
In [43]: np.r_[-1:1:2j]
Out[43]: array([-1., 1.])
In [44]: np.r_[-1:1:3j]
Out[44]: array([-1., 0., 1.])
In [45]: np.r_[-1:1:4j]
Out[45]: array([-1. , -0.33333333, 0.33333333, 1. ])
In [46]: np.r_[-1:1:5j]
Out[46]: array([-1. , -0.5, 0. , 0.5, 1. ])
In [47]: np.r_[-1:1:6j]
Out[47]: array([-1. , -0.6, -0.2, 0.2, 0.6, 1. ])
In [48]: np.all(np.r_[-1:1:6j] == np.linspace(-1, 1, 6))
Out[48]: True
但我不明白为什么这是预期的。如果我们从数学上考虑,添加一个复数不应该改变数字的实部,只会改变它的幅度,它只会随着每一步而增长!
我试着查看索引文档:在 user guide, as well as the API docs;都没有提到切片中的复杂步长。
非常感谢任何解释。
编辑:我没有彻底阅读文档,正如接受的答案所指出的那样,行为如文档中所述。
在您提供的 reference 中说:
"但是,如果 step 是虚数(即 100j),则其整数部分被解释为所需的点数,并且开始和结束都包括在内。换句话说,start:stop:stepj 被解释为as np.linspace(start, stop, step, endpoint=1) inside the brackets. 在切片符号扩展后,所有逗号分隔的序列连接在一起。“
因此,当您使用虚数切片索引时 - 您包括数组中的最后一个点,如 numpy.linspace
参考文献 here.
中所述
因此在您的示例中 - 1
包含在您的所有示例中,因为它是 stop
项。
如果我们将 stop
更改为 10,例如,我们将得到:
in: np.r_[-10:10:6j]
out: array([-10., -6., -2., 2., 6., 10.])
干杯。
我在 numpy docs 中遇到了一个示例,其中有一个示例在切片内具有复杂的步长(参见第二个示例)。
通过实验,我可以看出它在做什么;它类似于 np.linspace
.
In [42]: np.r_[-1:1:1j]
Out[42]: array([-1.])
In [43]: np.r_[-1:1:2j]
Out[43]: array([-1., 1.])
In [44]: np.r_[-1:1:3j]
Out[44]: array([-1., 0., 1.])
In [45]: np.r_[-1:1:4j]
Out[45]: array([-1. , -0.33333333, 0.33333333, 1. ])
In [46]: np.r_[-1:1:5j]
Out[46]: array([-1. , -0.5, 0. , 0.5, 1. ])
In [47]: np.r_[-1:1:6j]
Out[47]: array([-1. , -0.6, -0.2, 0.2, 0.6, 1. ])
In [48]: np.all(np.r_[-1:1:6j] == np.linspace(-1, 1, 6))
Out[48]: True
但我不明白为什么这是预期的。如果我们从数学上考虑,添加一个复数不应该改变数字的实部,只会改变它的幅度,它只会随着每一步而增长!
我试着查看索引文档:在 user guide, as well as the API docs;都没有提到切片中的复杂步长。
非常感谢任何解释。
编辑:我没有彻底阅读文档,正如接受的答案所指出的那样,行为如文档中所述。
在您提供的 reference 中说:
"但是,如果 step 是虚数(即 100j),则其整数部分被解释为所需的点数,并且开始和结束都包括在内。换句话说,start:stop:stepj 被解释为as np.linspace(start, stop, step, endpoint=1) inside the brackets. 在切片符号扩展后,所有逗号分隔的序列连接在一起。“
因此,当您使用虚数切片索引时 - 您包括数组中的最后一个点,如 numpy.linspace
参考文献 here.
因此在您的示例中 - 1
包含在您的所有示例中,因为它是 stop
项。
如果我们将 stop
更改为 10,例如,我们将得到:
in: np.r_[-10:10:6j]
out: array([-10., -6., -2., 2., 6., 10.])
干杯。