获取数组到最后一个索引的通用方法:包含所有索引

2024-06-17 10:39:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行了一个索引i,它指示如何对特定数组a进行切片。例如

a = np.arange(10)
for i in np.arange(1, 5):
    print(a[i:], a[:-i])

输出

[1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8]
[2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7]
[3 4 5 6 7 8 9] [0 1 2 3 4 5 6]
[4 5 6 7 8 9] [0 1 2 3 4 5]

但是,这对i=0不起作用:

a[0:]
Out[67]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[:-0]
Out[68]: array([], dtype=int64)

我的预期/所需输出

a[0:]
Out[67]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a[:-0]
Out[67]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

这种不对称的原因是什么?最终,我需要

  • 从任意一端选择“越来越少”
  • 角大小写:从每一端只选择一个(我可以通过a[i:]a[:-i]来做,当i==9
  • 转角大小写:从两端全选(如果a[:-0]返回的不是预期的结果,则这将不起作用)。你知道吗

我怎样才能做到这一点?你知道吗


Tags: infornp切片原因数组outarray
1条回答
网友
1楼 · 发布于 2024-06-17 10:39:58

因为-00(至少在整数域中,最常用的表示是2-补码),一元减号首先求值。对于浮点,有两种表示形式-00,但通常编程语言会对此进行抽象。你知道吗

但是,在这种情况下可以使用None,因此可以将其编写为:

a = np.arange(10)
for i in np.arange(0,10):
    print(a[i:], a[:-i or None])

对于i=0,返回:

[0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9]

相关问题 更多 >