带逗号的 Python 数组片? ?

我想知道在切片 Python 数组时逗号的用途是什么——我有一个例子似乎可以工作,但我觉得奇怪的是这一行

p = 20*numpy.log10(numpy.abs(numpy.fft.rfft(data[:2048, 0])))

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

53584 次浏览

它被用来从二维数组中提取特定的 column

因此,您的示例将从前2048行(0到2047)中提取列0(第一列)。但是请注意,这种语法只适用于 numpy 数组,而不适用于一般的 python 列表。

它用元组切片。元组的确切含义取决于所切分的对象。在 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)

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

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

它将下面这样的数组赋给 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]])

现在该切了

m[:,0]

给我们

array([11, 21, 31, 41, 51, 61, 71, 81, 91])

我可能误解了可汗学院的意思(所以我对此持保留态度) :

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

See Abhranil's note how this specific interpretation only applies to numpy