Numpy tentative tutorialは、a[ : :-1]
が逆a
であることを示唆しています。誰かが私たちにどのようにそこに着いたのか説明できますかnumpyの逆配列ですか?
a[:]
は、a
の各要素(軸= 0)の意味を理解しています。次の:
は、私の理解からスキップする要素の数(またはピリオド)を示す必要があります。
Numpy tentative tutorialは、a[ : :-1]
が逆a
であることを示唆しています。誰かが私たちにどのようにそこに着いたのか説明できますかnumpyの逆配列ですか?
a[:]
は、a
の各要素(軸= 0)の意味を理解しています。次の:
は、私の理解からスキップする要素の数(またはピリオド)を示す必要があります。
他にも触れたように、これはPythonのスライス技術であり、numpyはちょうどスーツに従います。うまくいけば、これはどのように動作するかを説明するのに役立ちます。
最後のビットはステップサイズです。 1
は、一度に1つの要素ずつステップすることを示し、-
はそれを逆にします。あなたが負のステップサイズを持っていない限り、
ブランクは、彼らが最後と最初に示し、その場合には、最初と最後を示す:
In [1]: import numpy as np
In [2]: a = np.arange(5)
In [3]: a
Out[3]: array([0, 1, 2, 3, 4])
In [4]: a[0:5:1]
Out[4]: array([0, 1, 2, 3, 4])
In [5]: a[0:5:-1]
Out[5]: array([], dtype=int64)
In [6]: a[5:0:-1]
Out[6]: array([4, 3, 2, 1])
In [7]: a[::-2]
Out[7]: array([4, 2, 0])
それは0
目から逆方向にステップしようとしたため、5行目は空の配列を与えます要素を5
thに設定します。
スライスに最後の要素という名前の「エンドポイント」が含まれていないため、行6は後方に移動するときに0
を逃します。
これはnumpyに固有のものではなく、a[::-1]
はslice(None, None, -1)
に相当します。最初の引数は開始インデックスで、2番目の引数は終了インデックスで、3番目の引数はステップです。開始または終了のためのNone
は、シーケンスの先頭または末尾を使用する場合と同じ動作を行い、ステップの場合は-1
が逆の順序でシーケンスを反復処理します。
これはnumpyではありません。Pythonです。 Pythonで
、次の構文で来て反復可能なシーケンス/のためのスライス、
seq[start:stop:step] => a slice from start to stop, stepping step each time.
があるすべての引数はオプションですが、:
はPythonは、スライスとしてこれを認識するためにそこにする必要があります。ステップのための
負の値は、また、逆の順序で反復可能な同じシーケンス/のコピーを作成するために働く:
>>> L = range(10)
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
そしてnumpyのは、何か良いサードパーティのライブラリのようなその「ルール」に続く..
これは、適切なPython用ですが、numpyのが良い第三のような規則のすべてに従い ->>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
がhttp://stackoverflow.com/questions/509211/the-python-slice-notationを見ますパーティーパッケージ。 – mgilson
また、numpyの基本スライスが元の配列のコピーではなくビューを返す方法の良い説明については、http://stackoverflow.com/a/4371049/875127を参照してください。 –