【发布时间】:2015-09-17 16:06:54
【问题描述】:
我一直在阅读 numpy i:j:k 切片的教程Scipy.org。在第二个例子之后,它说
假设 n 是被切片的维度中的元素数。然后,如果没有给出 i,它默认为 0 代表 k > 0 和 n - 1 代表 k 。如果 j 没有给出,它默认为 n 代表 k > 0 和 -1 代表 k 。如果没有给出 k,则默认为 1。
但是:
>>> import numpy as np
>>> x = np.array([0,1,2,3,4])
>>> x[::-1]
array([4, 3, 2, 1, 0])
如果j默认为-1,那么x[:-1:-1]应该等价于x[::-1],但是
>>> x[:-1:-1]
array([], dtype=int64)
>>> x[:-(len(x)+1):-1]
array([4, 3, 2, 1, 0])
同时
>>> x[:-(len(x)+1):-1]
array([4, 3, 2, 1, 0])
所以k 时j的默认值应该是-(n+1)。而根据this post on stackoverflow,我相信当k 是None时j的“官方”默认值。
我是否误解了 SciPy.org 上的教程?
【问题讨论】:
-
我认为可能有一段时间,负索引从数组末尾算起;您正在查看的文档行可能是从那个时候开始的。
-
这很有意义。谢谢!顺便说一句,感谢您重新格式化我的原始帖子。我绝对应该了解更多关于 stackoverflow 格式的信息
-
对于普通的 Python 切片,它默认为
None,但我不知道 numpy。