一、numpy数组索引、切片
- 直接进行索引,切片
- 对象[:, :]:先行后列
代码如下
a = np.array([[1, 2, 3], [11, 22, 33]]) # 二维数组
a[1, [0,1,2]] # 索引
a = np.array([[1, 2, 3], [11, 22, 33]]) # 二维数组
a[1, 0:3] # 切片
a2 = np.array([[[1,2,3],[4,5,6]], [[11,22,33],[44,55,66]]]) # 三维数组
a2[1, 0, [0, 2]]
a2 = np.array([[[1,2,3],[4,5,6]], [[11,22,33],[44,55,66]]]) # 三维数组
a2[1, 0, 0:2] # 切片为左闭右开
a2 = np.array([[[1,2,3],[4,5,6]], [[11,22,33],[44,55,66]]]) # 三维数组
a2[0:2, 0:2, 1:2] # 切片为左闭右开
操作演示如下
二、numpy数组形状修改
- ndarray.reshape(shape, order):返回一个具有相同数据域,但shape不一样的视图,行、列不进行互换
- ndarray.resize(new_shape):修改数组本身的形状(需要保持元素个数前后相同),行、列不进行互换
- ndarray.T:数组的转置,将数组的行、列进行互换
代码如下
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组4×5
a.reshape([5,4]) # # 数组的形状被修改为5行4列,总共20个元素,5×4=20
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组
a.reshape([-1, 10]) # 数组的形状被修改为2行10列, -1: 表示通过待计算,2×10=20
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组4×5
a.resize(2, 10) # 数组的形状被修改为2行10列
a.shape # 输出:(2, 10)
a
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组
a.T # 数组的转置
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组
a.T.shape # 数组的转置
演示如下
三、numpy数组类型修改和数组去重
- ndarray.astype(type):返回修改了类型之后的数组
- ndarray.tostring([order])或ndarray.tobytes([order]):构造包含数组中原始数据字节的Python字节
- np.unique():数组去重
使用方法代码如下
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组
a.astype(np.string_)
a = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 22, 33, 44, 55], [66, 77, 88, 99, 100]]) # 二维数组
a.tobytes()
a = np.array([[1, 2, 6, 4, 9], [6, 3, 4, 9, 2]]) # 二维数组
np.unique(a)
演示结果如下
学习导航:http://xqnav.top/