【问题标题】:Issue with understanding numpy array slicing理解 numpy 数组切片的问题
【发布时间】:2019-05-20 15:24:57
【问题描述】:

在对 Numpy 数组进行切片时,我觉得它看起来不一致。

In[87]: y
Out[87]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

In[88]: y[0,0]
Out[88]: 1

y[0,0]1。没关系,但是当我输入时

In[89]: y[0,0:1]
Out[89]: array([1])

为什么切片[0,0:1]是单值数组[1]?我更期待array[1,4] 在我输入时发生

In[90]: y[0,0:2]
Out[90]: array([1,4])

我宁愿期待array[1,4,7],因为y[0,2]7

顺便说一句,如果重要的话,我使用的是 Anaconda 2019 发行版。

In[91]: import sys
   ...: print(sys.version)
3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)]

有人知道为什么切片索引看起来如此混乱吗? 谢谢

【问题讨论】:

  • 在分割字符串和列表时会出现同样的模式:abcde'[0:2][0,1,2,3,4][0:2]。和范围:list(range(2))np.arange(0,2)。全部产生一个长度为 2 项的结果。
  • Python 中的切片一般是半开区间。所以 [0:1] 是 0 到 1,不包括 1,所以只有 0。同样 [0:2 ] 是 0 到 2 不包括 2 所以 0, 1。

标签: python arrays numpy matrix-indexing


【解决方案1】:

Numpy 使用与 Python 相同的切片符号,即[start:stop:step]

按照惯例,索引stop 处的值会从结果序列中排除。

您可以在this tutorial 的第 3 段找到更多信息。

切片从“from”索引延伸到“to”索引之前的一项。

【讨论】:

  • 谢谢雅克。即使看起来有点奇怪,我还是照原样接受。这对我来说令人满意地结束了这个主题。干杯。
猜你喜欢
  • 2019-11-27
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多