跳转至

numpy切片

numpy1D 数组的切片和索引

创建数组

a = np.arange(5) ** 2 

索引元素

a[2]

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

a[2:5]

索引步长

a[::2] #步长为2

倒序索引

a[::-1]

numpy2D数组索引

1570087092993

创建数组

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

取一行

a[1]

取一列

a[:,1]

取二维数组的一个元素

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

numpy2D数组和普通python数组区别

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

numpy2D数组切片

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数组合并

创建两个数组

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

上下合并

np.vstack([a,b])

水平合并

np.hstack([a,b])

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

numpy高级操作

创建数组a

a = np.arange(5) ** 2

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

创建数组i

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

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

用i数组,索引a的元素

a[i] 

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