numpy基础之切片索引

1 numpy基础之切片索引

多维数组有多个轴,索引下标从0轴开始,每个轴下标用逗号分隔。

比如[m,n,o],表示0轴上索引为m,1轴上索引为n,2轴上索引为o的下标。

切片索引下标是在指定轴上用冒号选取一定范围的下标。

比如[m:n,i:j],表示0轴上索引从m到n(不包括n),1轴上索引从i到j(不包括j)的下标。

1.1 一维数组切片

一维数组的切片索引跟python列表类似。

>>> import numpy as np
>>> ar1=np.arange(10,20)
>>> ar1
array([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
# ar1[m:n]获取0轴上索引从m到n(不包括n)的元素
>>> ar1[5:8]
array([15, 16, 17])

1.2 二维数组切片

多维数组的切片索引是沿着指定轴选取元素。

1.2.1 单切片

[m:n]获取0轴上索引从m到n(不包括n)的元素

[:n]起始索引为空则默认从0开始

[m:]结束索引为空则默认到最后一个索引(长度减1)

[:]没有起始和结束索引则选取整个轴

>>> import numpy as np
# 创建一个二维数组
>>> ar2d=np.array([[10,11,12],[13,14,15],[17,18,19],[20,21,22]])
>>> ar2d
array([[10, 11, 12],
      [13, 14, 15],
      [17, 18, 19],
      [20, 21, 22]])
# ar2d[m:n]获取0轴上索引从m到n(不包括n)的元素
# ar2d[1:3]获取0轴上1、2索引的元素,即中间2行的元素
>>> ar2d[1:3]
array([[13, 14, 15],
      [17, 18, 19]])
# [:n]起始索引为空则默认从0开始
>>> ar2d[:3]
array([[10, 11, 12],
      [13, 14, 15],
      [17, 18, 19]])
# [m:]结束索引为空则默认到最后一个索引(长度减1)
>>> ar2d[1:]
array([[13, 14, 15],
      [17, 18, 19],
      [20, 21, 22]])
# [:]没有起始和结束索引则选取整个轴
>>> ar2d[:]
array([[10, 11, 12],
      [13, 14, 15],
      [17, 18, 19],
      [20, 21, 22]])

1.2.2 多个切片

[m:n,i:j]多个切片,取多个轴交集的部分

[m:n,i]切片与整数混合

# [m:n,i:j]多个切片,取多个轴交集的部分
# ar2d[:2,1:]表示前2行的第2、3列元素
# shape为(2,2)
>>> ar2d[:2,1:]
array([[11, 12],
       [14, 15]])
# [m:n,i]切片与整数混合
# ar2d[:2,2]表示前2行的第3列元素
>>> ar2d[:2,2]
array([12, 15])
# 冒号对高维轴切片
>>> ar2d[:,:1]
array([[10],
       [13],
       [17],
       [20]])

1.2.3 索引切片图片

ar2d=np.array([[10,11,12],[13,14,15],[17,18,19],[20,21,22]])

ar2d[1:3] 切片取0轴的索引为1和2的元素【包头不包尾】,如下图
numpy基础之切片索引_第1张图片

ar2d[:3] 切片取0轴的索引为0、1和2的元素【起始索引默认从0开始】,如下图
numpy基础之切片索引_第2张图片

ar2d[1:] 切片取0轴的索引为1、2和3的元素【结束索引默认到最后】,如下图
numpy基础之切片索引_第3张图片

ar2d[:] 切片取0轴的全部元素,如下图
numpy基础之切片索引_第4张图片

ar2d[:2,1:] 切片取0轴索引为0、1与1轴索引为1、2交集的元素,如下图
numpy基础之切片索引_第5张图片

ar2d[:,:1] 切片取0轴索引为0、1、2、3与1轴索引为0交集的元素,如下图
numpy基础之切片索引_第6张图片

你可能感兴趣的:(python,numpy,python)