これはNumpyではなく、Sequence一般で使われる表記です。
python
1>>> print([0,1,2,3,4,5][::-1])
2[5, 4, 3, 2, 1, 0]
3>>> print((0,1,2,3,4,5)[::-1])
4(5, 4, 3, 2, 1, 0)
5>>> print("ABCDEF"[::-1])
6FEDCBA
a[start:stop:step]はSequenceのstartから初めてstep刻みでstopまでを与える機能でスライスと呼びます。
a[::-1]はa[None:None:-1]の省略形です。
python
1>>> print([0,1,2,3,4,5][None:None:-1])
2[5, 4, 3, 2, 1, 0]
pythonは、a[start:stop:step]をa[slice(start, stop, step)]だと解釈します。
つまり、
python
1>>> print([0,1,2,3,4,5][slice(None, None, -1)])
2[5, 4, 3, 2, 1, 0]
slice(None, None, -1) はsliceオブジェクトです。Sequenceのスライスの要素は、slinceオブジェクトの.indicesメソッドによります。
python
1>>> print(type(slice(None, None, -1)))
2<class 'slice'>
3>>> print(slice(None, None, -1).indices(len([0,1,2,3,4,5])))
4(5, -1, -1)
このように、startとstopがNone(つまり省略)でstepが-1(負)の場合、startは5(右端)、stopは-1(左端)と解釈されます。
以上の結果、a[::-1]は逆順のSequenceとなります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/04 19:43 編集
2021/04/05 11:02