numpy index slicing 数组的切片和索引 numpy数组初恋

之前numpy 数组创建的文章中我们介绍了数组的创建入门,本篇我们旨在简单介绍数组的基本操作–定向定点的取值,ndarray对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作一样。

ndarray 数组可以基于 0 – n 的下标进行索引,切片对象可以通过内置的 slice 函数,并设置 start, stop 及 step 参数进行,从原数组中切割出一个新数组。

基本索引

    # 一维数组切片
    a = np.arange(10)
    s = slice(2, 7, 2)  # 从索引 2 开始到索引 7 停止,间隔为2
    print("a = ", a)
    print("s = slice(2, 7, 2) # 从索引 2 开始到索引 7 停止,间隔为2")
    print("a[s] = ", a[s])
    print("a[2:7:2] = ", a[2:7:2])
    print("a[2:7] = ", a[2:7])
    print("a[2:] = ", a[2:] )
    print("a[2] = ", a[2])
a =  [0 1 2 3 4 5 6 7 8 9]
s = slice(2, 7, 2) # 从索引 2 开始到索引 7 停止,间隔为2
a[s] =  [2 4 6]
a[2:7:2] =  [2 4 6]
a[2:7] =  [2 3 4 5 6]
a[2:] =  [2 3 4 5 6 7 8 9]
a[2] =  2
    # 多维数组
    a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
    print("a = ", a)
    print("a[::-1] = ", a[::-1])
    print("a[:, ::-1] = ", a[:, ::-1])
    print("a[...,1] = ", a[..., 1])
    print("a[1,...] = ", a[1, ...])
    print("a[...,1:] = ", a[..., 1:])
a =  [[1 2 3]
 [3 4 5]
 [4 5 6]]
a[::-1] =  [[4 5 6]
 [3 4 5]
 [1 2 3]]
a[:, ::-1] =  [[3 2 1]
 [5 4 3]
 [6 5 4]]
a[...,1] =  [2 4 5]
a[1,...] =  [3 4 5]
a[...,1:] =  [[2 3]

花里胡哨索引

    # 数组索引
    print("a[[0, 1, 2], [0, 1, 0]] =", a[[0, 1, 2], [0, 1, 0]])
    x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
    print('我们的数组是x:', x)
    rows = np.array([[0, 0], [3, 3]])
    cols = np.array([[0, 2], [0, 2]])
    print("x[rows, cols] = ", x[rows, cols])
    # 布尔索引
    print("x[x > 3] = ", x[x> 3])
a[[0, 1, 2], [0, 1, 0]] = [1 4 4]
我们的数组是x: [[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
x[rows, cols] =  [[ 0  2]
 [ 9 11]]
x[x > 3] =  [ 4  5  6  7  8  9 10 11]

发表回复