Numpy 暫定チュートリアルa[ : :-1]
は、それが逆であることを示唆していa
ます。どうやってそこにたどり着いたのか誰か説明してくれませんか?
(軸= 0)a[:]
の各要素の意味を理解しています。a
次:
は、私の理解では、スキップする (またはピリオドする) 要素の数を示す必要があります。
Numpy 暫定チュートリアルa[ : :-1]
は、それが逆であることを示唆していa
ます。どうやってそこにたどり着いたのか誰か説明してくれませんか?
(軸= 0)a[:]
の各要素の意味を理解しています。a
次:
は、私の理解では、スキップする (またはピリオドする) 要素の数を示す必要があります。
numpy ではなく、Python です。
Python では、sequence/iterable のスライスがあり、次の構文になります。
seq[start:stop:step] => a slice from start to stop, stepping step each time.
すべての引数はオプションですが、:
Python がこれをスライスとして認識するために a が必要です。
step の負の値は、逆の順序で同じシーケンス/反復可能のコピーを作成するためにも機能します。
>>> L = range(10)
>>> L[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
そして、numpy は、優れたサードパーティ ライブラリと同様に、その「ルール」に従います。
>>> a = numpy.array(range(10))
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 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 行目では、要素 th から要素 th に逆戻りしようとするため、空の配列が返され5
ます。
スライスには「エンドポイント」(最後の要素という名前) が含まれていないため、6 行目は0
後方に移動するときに失敗します。
これは numpy に固有のものではなく、スライスa[::-1]
は と同等ですslice(None, None, -1)
。ここで、最初の引数は開始インデックス、2 番目の引数は終了インデックス、3 番目の引数はステップです。 None
for start または stop はシーケンスの開始または終了を使用するのと同じ動作をし、-1
for step は逆の順序でシーケンスを繰り返します。
逆のPython ビルトインを使用できます。
import numpy as np
bins = np.arange(0.0, 1.1, .1)
for i in reversed(bins):
print(i)