15

Numpy 暫定チュートリアルa[ : :-1]は、それが逆であることを示唆していaます。どうやってそこにたどり着いたのか誰か説明してくれませんか?

(軸= 0)a[:]の各要素の意味を理解しています。a:は、私の理解では、スキップする (またはピリオドする) 要素の数を示す必要があります。

4

4 に答える 4

19

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])

このリンクを参照してください

于 2013-04-01T17:26:25.640 に答える
10

他の人が指摘したように、これは 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])

05 行目では、要素 th から要素 th に逆戻りしようとするため、空の配列が返され5ます。
スライスには「エンドポイント」(最後の要素という名前) が含まれていないため、6 行目は0後方に移動するときに失敗します。

于 2013-04-01T17:16:04.340 に答える
5

これは numpy に固有のものではなく、スライスa[::-1]は と同等ですslice(None, None, -1)。ここで、最初の引数は開始インデックス、2 番目の引数は終了インデックス、3 番目の引数はステップです。 Nonefor start または stop はシーケンスの開始または終了を使用するのと同じ動作をし、-1for step は逆の順序でシーケンスを繰り返します。

于 2013-04-01T17:17:47.143 に答える
0

のPython ビルトインを使用できます。

import numpy as np

bins = np.arange(0.0, 1.1, .1)
for i in reversed(bins):
    print(i)
于 2018-08-07T14:12:46.990 に答える