我想对 numpy 数组进行切片以获取除第一项之外的所有元素,除非只有一个元素,在这种情况下,我只想选择该元素(即不切片)。
有没有办法在不使用 if 语句的情况下做到这一点?
x = np.array([1,2,3,4,5])
y = np.array([1])
print(x[1:]) # works
print(y[1 or None:]) # doesn't work
我尝试了上面的方法,但没有成功。
最佳答案
在没有条件的情况下编写该内容的一种方法是使用带有 -len(arr) + 1 的负索引
:
>>> x = np.array([1,2,3,4,5])
>>> y = np.array([1])
>>> x[-len(x)+1:]
array([2, 3, 4, 5])
>>> y[-len(y)+1:]
array([1])
如果数组有 N 个元素,其中 N > 1,切片将变为 -N+1:
。由于-N+1 < 0,它实际上是(N + (-N + 1)): === 1:
,即从第一个开始。
其他情况下N == 1,切片为0:
,即,向前取第一个元素,这是唯一的元素。
由于切片的工作原理,空数组(即 N = 0 情况)也会导致空数组。
关于python - 切片除第一个元素之外的所有元素,除非单个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69304992/