Python数组切片用逗号?

Sol*_*une 36 python numpy list slice

我想知道在切割Python数组时逗号的用途是什么 - 我有一个似乎可行的例子,但对我来说看起来很奇怪的一行是

p = 20*numpy.log10(numpy.abs(numpy.fft.rfft(data[:2048, 0])))
Run Code Online (Sandbox Code Playgroud)

现在,我知道在切片数组时,第一个数字是开始,下一个是结束,最后一个是步骤,但结束号后面的逗号是什么?谢谢.

Abh*_*Das 28

它用于从2D数组中提取特定.请参阅此处的第一个示例.

因此,您的示例将从前2048行(0到2047)中提取第0列(第一列).但请注意,此语法仅适用于numpy数组,而不适用于常规python列表.

  • 感谢您指定**此语法仅适用于 numpy 数组,不适用于一般的 python**,我在尝试使其在普通 Python 上工作时有点头疼。 (4认同)
  • 它可以与该包一起使用,因为他们已经为其“__getitem__”函数实现了相关行为。Python 只是传递相关参数,但常规的 2D 列表不知道如何处理它。在此处查看更多信息 /sf/ask/1481602601/ (3认同)
  • 您的链接已损坏。 (3认同)
  • 我很困惑:“语法东西”如何*仅*与包一起使用?难道“语法的东西”不应该被接受*一般*,所以在香草中,应该吗?numpy 包是否修改了解释器/编译器?(我来自Java和C,所以在我的头脑中语法是非常固定的并且不可移动) (2认同)

fia*_*iat 13

经验 - 使用numpy创建一个数组

m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int)
Run Code Online (Sandbox Code Playgroud)

它分配如下的数组 m

array(
      [[11, 12, 13, 14],
       [21, 22, 23, 24],
       [31, 32, 33, 34],
       [41, 42, 43, 44],
       [51, 52, 53, 54],
       [61, 62, 63, 64],
       [71, 72, 73, 74],
       [81, 82, 83, 84],
       [91, 92, 93, 94]])
Run Code Online (Sandbox Code Playgroud)

现在为切片

m[:,0]
Run Code Online (Sandbox Code Playgroud)

给我们

array([11, 21, 31, 41, 51, 61, 71, 81, 91])
Run Code Online (Sandbox Code Playgroud)

我可能误解了可汗学院(所以拿一粒盐):

在线性代数术语中,m[:,n]nth矩阵的列向量m

请参阅Abhranil的说明,这种具体解释仅适用于numpy


Ign*_*ams 11

它用元组切片.元组的确切含义取决于被切片的对象.在NumPy数组中,它在n维数组上执行m维切片.

>>> class C(object):
...   def __getitem__(self, val):
...     print val
... 
>>> c = C()
>>> c[1:2,3:4]
(slice(1, 2, None), slice(3, 4, None))
>>> c[5:6,7]
(slice(5, 6, None), 7)
Run Code Online (Sandbox Code Playgroud)