Numpy 索引切片及reshape方法小结

来源:互联网 发布:06年奥尼尔总决赛数据 编辑:程序博客网 时间:2024/06/05 17:42

**

用表格的形式比较直观

**
先创建一个简单的array

b = arange(24).reshape(2,3,4)

三维坐标对应:楼层,行号,列号

方法 说明 结果 b.shape 获取维度/也可赋值 (2, 3, 4) b[0,0,0] 获取一个元素 0 b[:,0,0] 获取所有楼的第一个元素 array([ 0, 12]) b[0,…] 获取第一楼的所有元素 array([[ 0, 1, 2, 3],[ 4, 5, 6,7],[ 8, 9, 10, 11]]) b[0,1,::2] 间隔选择元素 array([4, 6]) b[0,:,-1] 选取第一楼最后一列 array([ 3, 7, 11]) b[0,::-1,-1] 反向选取第一楼最后一列 array([11, 7, 3]) b[::-1] 将所有楼层取反 array([[[12,13,14,15],[16,17,18,19],[20,21,22,23],[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9,10,11]]]) b.ravel() 展平 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19, 20, 21, 22, 23]) b.flatten() 同上 同上 b.transpose() 取转置 array([[ 0, 4, 8, 12, 16, 20],[ 1, 5, 9, 13, 17, 21],[ 2, 6,10, 14, 18, 22],[ 3, 7,11, 15, 19, 23]]) b.T 同上 同上



数组的组合

首先创建两个数组

a = arange(9).reshape(3,3)b = 2 * a
方法 说明 结果 hstack((a,b)) 水平组合 array([[ 0, 1, 2, 0, 2, 4],[ 3, 4, 5, 6, 8,10],[ 6, 7, 8,12,14,16]]) concatenate((a, b), axis=1) 同上 同上 vstack((a, b)) 垂直组合 array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 0, 2, 4],[ 6, 8,10],[12,14,16]]) concatenatel((a, b), axis = 0) 同上 同上 dstack((a,b)) 深度组合 array([[[0, 0],[1, 2],[2, 4]],[[3, 6],[4, 8],[5,10]],[[6,12],[7,14],[8,16]]]) column_stack((a,b)) 列组合 array([[ 0, 1, 2, 0, 2, 4],[ 3, 4, 5, 6, 8,10],[ 6, 7, 8,12,14,16]]) row_stack((a,b)) 行组合 array([[ 0, 1, 2],[ 3, 4, 5],[ 6, 7, 8],[ 0, 2, 4],[ 6, 8,10],[12,14,16]])



数组的分割

c = arange(27).reshape(3, 3, 3)
方法 说明 结果 hsplit(a,3) 水平分割 [array([[0],[3],[6]]),array ([[1],[4],[7]]),array ([[2],[5],[8]])] split(a,3,axis=1) 同上 同上 vsplit(a,3) 垂直分割 [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])] split(a,3,axis=0) 同上 同上 dsplit(c,3) 深度分割 [array([[[ 0],[ 3],[ 6]],[[ 9],[12],[15]],[[18],[24]]]),array([[[ 1],[ 4],[ 7]],[[10],…]



数组的属性

方法 说明 结果 b.ndim 给出数组的维数 2 b.size 数组元素的总个数 9 b.itemsize 元素在内存中所占的字节数 4 b.nbytes 整个数组所占的存储空间 36 b.resize(1,9) 重组数组维度 array([[ 0, 2, 4, 6, 8, 10, 12, 14, 16]]) b.flat 返回numpy.flatiter对象(像遍历一维数组一样去遍历任意的多维数组)



数组的转换

方法 说明 结果 b.tolist() 转换成列表 [[0, 1], [2, 3]] b.astype(float) 转换数组时指定数据类型 array([[ 0., 1.],[ 2., 3.]])
0 0
原创粉丝点击