您的位置:首页 > 编程语言 > Python开发

Numpy 索引切片及reshape方法小结

2016-07-21 11:49 344 查看
**

用表格的形式比较直观

**

先创建一个简单的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.]])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: