suv*_*ayu 5 arrays numpy python-3.x numpy-slicing
我在numpy 文档中遇到了一个示例,其中有一个切片内具有复杂步长的示例(请参阅第二个示例)。
从实验中,我可以看到它在做什么;它类似于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
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么这是预期的。如果我们从数学角度考虑,添加一个复数不应该改变数字的实部,而只会改变它的大小,而它只会随着每一步而增长!
我尝试查看索引文档:在用户指南中,以及API 文档;都没有提到切片中的复杂步长。
任何解释将不胜感激。
编辑:我没有彻底阅读文档,正如已接受的答案所指出的,行为如文档中所述。
在您提供的参考文献中说:
“但是,如果 step 是一个虚数(即 100j),那么它的整数部分将被解释为所需的点数,并且开始和结束都包含在内。换句话说,start:stop:stepj 被解释为 np.linspace( start、stop、step、endpoint=1) 在括号内。在切片表示法扩展后,所有逗号分隔的序列都连接在一起。
因此,当您使用虚构切片索引时,您将包含数组中的最后一个点,如参考文献numpy.linspace
中所述。
因此,在您的示例中 -1
包含在您的所有示例中,因为它是项目stop
。
stop
例如,如果我们将 更改为 10,我们会得到:
in: np.r_[-10:10:6j]
out: array([-10., -6., -2., 2., 6., 10.])
Run Code Online (Sandbox Code Playgroud)
干杯。
归档时间: |
|
查看次数: |
658 次 |
最近记录: |