03-numpy切片和索引

numpy1D 数组

numpy1D 数组的切片和索引

创建数组

1
a = np.arrange(5) ** 2 

索引元素

1
a[2]

索引2-5元素,前闭后开

1
a[2:5]

索引步长

1
a[::2] #步长为2

倒序索引

1
a[::-1]

numpy2D数组

numpy2D数组索引

1570087092993

创建数组

1
a = np.arange(6).reshape(2,3)

取一行

1
a[1]

取一列

1
a[:,1]

取二维数组的一个元素

1
2
a[1][1]
a[1,1] #推荐这种写法

numpy2D数组和普通python数组区别

1
2
3
4
b = [[0,1,2],[3,4,5]]
b[1]
b[1][1]
b[1,1] #报错

numpy2D数组切片

1
a = np.arange(25).reshape(5,5)

2d_indexing

  • 切割红色数据

a[1,2:4]

  • 切割绿色数据

a[3:,3:]

  • 切割紫色数据

a[:,1]

  • 切割黄色数据

a[::2,2::2]

2d_fancy_indexing

  • 切割红色区域

a[[0,2,4],[0,2,4]] #推荐这种写法 或者 a[(0, 2, 4), (0, 2, 4)]

  • 切割绿色区域

a[[1,3,4],3:]

  • 切割紫色区域

mask = np.array([False, True, True, True, False]) a[1, mask]

多加练习,熟练掌握,能自己写,能读懂别人写的.

numpy数组操作

numpy数组拆分

创建数组

1
a = np.arrange(9).reshape(3,3)

按行拆分

1
np.vsplit(a,3)

按列拆分

1
np.hsplit(a,3)

numpy数组合并

创建两个数组

1
2
a = np.array([[0, 1], [2, 3]])
b = np.array([[0, -1], [-2, -3]])

上下合并

1
np.vstack([a,b])

水平合并

1
np.hstack([a,b])

注意语法: np.vstack(a,b) 或者 np.vstack(a,b) 是错误的

numpy高级操作

创建数组a

1
a = np.arange(5) ** 2

array([ 0, 1, 4, 9, 16], dtype=int32)

创建数组i

1
i = np.array([3, 1, 3, 0])

array([3, 1, 3, 0])

用i数组,索引a的元素

1
a[i] 

array([9, 1, 9, 0], dtype=int32)