【问题标题】:What's the comma (,) doing in the middle of Python list slicing? [duplicate]Python列表切片中间的逗号(,)在做什么? [复制]
【发布时间】:2018-07-21 19:13:23
【问题描述】:

切片在这里做什么-

data = np.loadtxt(input_file, delimiter=',')
X, y = data[:, :-1], data[:, -1]

我知道 -1 反转列表,冒号是开始和停止信号。但是 comma (,) 在中间做什么?

【问题讨论】:

  • 让我们澄清一个误解:那不是 Python 列表!它是一个支持[] (__getitem__) 运算符的 Python 对象,但它不是一个列表!

标签: python list


【解决方案1】:

NumPy 支持多个维度。在您的情况下,这是一个 2D 切片:逗号之前的部分切片第一个维度,逗号之后的部分切片第二个维度。这意味着数据是 2D 或更大的,而 loadtxt() 确实会生成 2D 数组。

参考:https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html

【讨论】:

  • data[:][:-1] 将等同于 data[:-1];第一个切片操作本质上是空操作。因此,我认为将data[:, :-1] 视为data[:][:-1] 是没有帮助的——第一个取除二维数组的最后一列之外的所有内容,而第二个取除二维数组的最后一行之外的所有内容。也许您的意思是data[:, None][None, :-1]data[:][None, :-1],但这只是介绍了更多需要解释的内容:-(。
  • @MarkDickinson:好点,我删除了答案的那部分。
  • 所以要明确data[:, :-1] 这里 -1 不会反转 2D 矩阵但不包括最后一列?
  • @AlmuntasirAbir:正确,因为逗号分割了切片,所以第二个切片是:-1,除了最后一个。 [:, ::-1] 会翻转矩阵。
猜你喜欢
  • 2013-06-26
  • 2013-10-24
  • 2014-02-05
  • 2017-08-01
  • 2012-04-15
  • 1970-01-01
  • 2010-12-14
相关资源
最近更新 更多