NumPy 索引与切片

import numpy as np
A = np.arange(24).reshape((2, 3, 4))
A
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])

索引

下标从 0 开始。

A[1, 2, 3]
23

负数索引表示从后向前数,-1 表示最后一个元素的下标,以此类推。

A[-1, -2, -3]
17

切片

冒号表达式:begin🔚step,提取范围为 $[begin, end)$,步长为 $step$。

A[1, 1:2, 1:3]
array([[17, 18]])

可以只给出 beginend,表示从 begin 到尾(从头到 end):

A[1, 1:, :2]
array([[16, 17],
       [20, 21]])

只有一个冒号表示这一维全部提取:

A[:, 1, 1]
array([ 5, 17])

省略号可以省略多个维度连续的冒号:

A[..., 0]
array([[ 0,  4,  8],
       [12, 16, 20]])

冒号表达式可以省略开始和结束的位置,只给出步长:

A[:, ::2, :]
array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[12, 13, 14, 15],
        [20, 21, 22, 23]]])
Previous
Next