【问题标题】:What does this line of Python code do?这行 Python 代码做了什么?
【发布时间】:2023-03-17 17:46:02
【问题描述】:

我目前正在阅读 Python 代码库,但我不确定我是否理解这种语法:

Sp = S[:Kp,:]
Sc = S[Kp:,:]

我猜它与拼接有关,但我不确定逗号运算符是如何使用的。 S 来自外部系统,通过查看代码无法辨别其格式。我猜这是一个列表/数组/矩阵。 Kp 是一个整数变量。

上面的代码运行后SpSc究竟会持有什么?

【问题讨论】:

  • S 很可能是一个 numpy 数组。
  • 看起来像 numpy 和 numpy slicing
  • 实际上 S 是从 matlab 文件中读取和填充的,这就是我被告知的。有什么方法可以检查它是否是一个 numpy 数组?
  • print(type(S)) 会告诉你类型。您正在寻找类似于numpy.ndarray 的东西。

标签: python python-2.7 numpy syntax


【解决方案1】:

S 可能是一个 numpy ndarray。 Kp 可能是一个整数。 你猜对了,它是“拼接”,但大多数人称之为切片。它在行上切片,逗号后的第二个: 指的是所有列。

Sp = S[:Kp,:]

SpS 的子数组,所有行都到(但不包括)Kp

Sc = S[Kp:,:]

ScS 的子数组,所有行从Kp 到末尾(包括)。

【讨论】:

  • 我猜到了。但我无法弄清楚的是“逗号”和后续: 的使用。他们真的在做什么吗?如果我无视他们,我可以辨别你说的话。但是拥有它会改变什么吗?
  • 拥有它不会改变任何东西。代码可以等效为S[:Kp]S[Kp:]
  • 叹息!我希望人们用实际做某事的片段编写代码:P
  • S[:Kp,:] 要求S 至少有两个维度,因此与S[:Kp] 不太一样。
  • 确实如此,但考虑到它确实至少有两个维度,所以这里应该是相同的。 OTOH,如果没有它,我不可能这么快就猜到我们正在处理一个 numpy 数组,所以它确实在这个意义上起到了作用...... ;)
猜你喜欢
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多