想象一些 numpy 数组,例如x = np.linspace(1,10)
。
x[i:j]
让我可以查看范围 [i,j)
的 x
。
我喜欢我还可以执行 x[i:-k]
,它排除了最后的 k
元素。
但是,为了包含最后一个元素,我需要执行 x[i:]
。
我的问题是:例如,如果我需要遍历 k
,我该如何组合这两种表示法。
说我想这样做:
l = list()
for k in [5,4,3,2,1]:
l.append(x[:-k])
l.append(x[:])
让我恼火的是最后一行。在这个简单的例子中,当然它并没有太大的区别,但有时这会变得更加烦人。我想念的是更像 DRY 的东西。
以下片段当然不会产生预期的结果,但代表了我寻求的代码风格:
l = list()
for k in [5,4,3,2,1,0]:
l.append(x[:-k])
最佳答案
这有点麻烦,但由于 -0
与 0
相同,因此没有简单的解决方案。
一种方法是:
l = list()
for k in [5,4,3,2,1,0]:
l.append(x[:-k or None])
这是因为当k
为0时,-k或None
为None
,而x[:None]
会做你想做的。对于 k
的其他值,-k 或 None
将是 -k
。
虽然我不确定我自己是否喜欢它。
关于python - 我在切片范围内使用什么值来包含 numpy 数组中的最后一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15627312/