python - 切片除第一个元素之外的所有元素,除非单个元素

标签 python numpy numpy-slicing

我想对 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/

相关文章:

python - 打乱 2D numpy 数组中的位置列表,然后使用它在 3D numpy 数组中进行选择(或切片)

python - 如果我只切出 1 列与切出多列,为什么 numpy 的行为会有所不同?

python - pyBrain 中的序列化、分类、机器学习、预测

python - 如何使用 python 处理错误?

python - numpy.diff 返回一个空数组?

python - 在没有循环的情况下将 numpy 数组中的 1's to 0 and 0' s 更改为 1

python - 为什么 NumPy 为 x[[slice(None), 1, 2]] 创建一个 View

python - Pandas - 当一项不同时标记

python - 如何从 Django 中的注册表(用户)将 GROUP 分配给用户?

python - 无法在 mac OS X mountain lion 上导入 numpy