#!/usr/bin/env python # coding: utf-8 # ##内容索引 # 1. 数组组合 # 使用**vstack、dstack、hstack、column_stack、row_stack以及concatenate函数**完成数组的组合 # # 2. 数组分割 # 使用**hsplit、vsplit、dsplit和split函数** # # 3. 数组属性 # # 4. 数组转换 # **tolist、astype函数** # In[3]: get_ipython().run_line_magic('pylab', '') # ##1. 数组的组合 # Numpy数组有水平组合、垂直组合和深度组合等多种组合方式,我们将使用**vstack、dstack、hstack、column_stack、row_stack以及concatenate函数**完成数组的组合 # In[6]: a = arange(9).reshape(3,3) b = 2*a print 'a: \n',a print 'b: \n',b # ###(1)水平组合 # 将ndarray对象构成的元组作为参数,传给hstack函数 # 或者使用concatenate函数实现该功能 # In[7]: hstack((a, b)) # In[8]: concatenate((a,b), axis=1) # ###(2)垂直组合 # vstack函数 # concatenate函数,axis参数设置为0 # In[9]: vstack((a,b)) # In[10]: concatenate((a,b), axis=0) # ###(3)深度组合 # 深度组合,就是将一系列数组沿着纵轴(深度)方向进行层叠组合。 # In[11]: dstack((a,b)) # ###(4)列组合 # column_stack函数。 # # 对于一维数组将按列方向进行组合。 # # 对于二维数组,效果和hstack一样。 # In[12]: oned = arange(2) twice_oned = 2 * oned column_stack((oned, twice_oned)) # In[13]: column_stack((a,b)) # In[14]: column_stack((a,b)) == hstack((a,b)) # ###(5)行组合 # 按行方向进行组合。对于两个一维数组,将直接层叠起来合成一个二维数组;对于二维数组,row_stack和vstack的效果一样。 # In[15]: row_stack((a,b)) # ##2. 数组的分割 # Numpy数组可以进行水平、垂直和深度分割,相关的函数有hsplit、vsplit、dsplit和split。我们可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置。 # ###(1)水平分割 # In[16]: a # In[17]: #将数组沿水平方向分割为3个相同大小的子数组 hsplit(a, 3) # In[18]: #调用split函数,指定参数axis=1 split(a, 3, axis=1) # ###(2)垂直分割 # In[19]: vsplit(a, 3) # In[20]: split(a, 3, axis=0) # ###(3)深度分割 # In[21]: c = arange(27).reshape(3,3,3) # In[22]: c # In[23]: dsplit(c, 3) # ##3. 数组的属性 # * ndim属性,给出数组的维度 # * size属性,给出数组元素的总个数 # * itemsize属性,给出数组元素在内存中所占的字节数 # * nbytes属性,给出整个数组所占存储空间,即itemsize和size属性的乘积 # * T属性,和transpose函数一样 # * real属性给出复数数组的实部,imag属性给出复数数组的虚部 # flat属性将返回numpy.flatiter对象,这是获得flatiter对象的唯一方式。 # 这个所谓的“扁平迭代器”可以让我们像遍历一维数组一样遍历任意的多维数组。 # In[24]: b = arange(4).reshape(2,2) # In[25]: b # In[26]: f = b.flat f # In[27]: for item in f: print item # In[28]: #使用flatiter对象直接获取一个数组的元素 b.flat[2] # In[29]: b.flat[[1,3]] # In[30]: #对flat属性赋值将导致整个数组的元素被覆盖 b.flat = 7 # In[31]: b # In[34]: b.flat[[1,3]] = 1 b # ##4. 数组的转换 # **tolist函数将numpy数组转换成python列表** # In[35]: b # In[36]: b.tolist() # **astype函数可以在转换数组时指定数据类型** # In[37]: b.astype(float) # In[ ]: