web-dev-qa-db-ja.com

Pythonカンマのある配列スライス?

Python配列をスライスするときのコンマの使用法は何ですか?-私は動作するように見える例がありますが、奇妙に見える行は

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

配列をスライスすると、最初の番号が開始、次が終了、最後がステップであることはわかっていますが、終了番号の後のコンマは何を示していますか?ありがとう。

39
SolarLune

2D配列から特定のを抽出するために使用されています。最初の例 here を参照してください。

したがって、この例では、最初の2048行(0〜2047)から列0(最初の列)を抽出します。ただし、この構文はnumpy配列でのみ機能し、一般的なpythonリストでは機能しないことに注意してください。

33
Abhranil Das

経験的に-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]は、行列nthm列ベクトルを取得しています

この特定の解釈がnumpyにのみ適用される方法についてのAbhranilのメモを参照してください

17
fiat

タプルでスライスします。タプルの正確な意味は、スライスされるオブジェクトによって異なります。 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)