Python NumPy库安装使用笔记
1.NumPy安装
使用pip包管理工具进行安装
$sudopipinstallnumpy
使用pip包管理工具安装ipython(交互式shell工具)
$sudopipinstlalipython $ipython--pylab #pylab模式下,会自动导入SciPy,NumPy,Matplotlib模块
2.NumPy基础
2.1.NumPy数组对象
具体解释可以看每一行代码后的解释和输出
In[1]:a=arange(5) #创建数据 In[2]:a.dtype Out[2]:dtype('int64') #创建数组的数据类型 In[3]:a.shape #数组的维度,输出为tuple Out[3]:(5,) In[6]:m=array([[1,2],[3,4]]) #array将list转换为NumPy数组对象 In[7]:m #创建多维数组 Out[7]: array([[1,2], [3,4]]) In[10]:m.shape #维度为2*2 Out[10]:(2,2) In[14]:m[0,0] #访问多维数组中特定位置的元素,下标从0开始 Out[14]:1 In[15]:m[0,1] Out[15]:2
2.2.数组的索引和切片
In[16]:a[2:4] #切片操作类似与Python中list的切片操作 Out[16]:array([2,3]) In[18]:a[2:5:2] #切片步长为2 Out[18]:array([2,4]) In[19]:a[::-1] #翻转数组 Out[19]:array([4,3,2,1,0]) In[20]:b=arange(24).reshape(2,3,4) #修改数组的维度 In[21]:b.shape Out[21]:(2,3,4) In[22]:b #打印数组 Out[22]: 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]]]) In[23]:b[1,2,3] #选取特定元素 Out[23]:23 In[24]:b[:,0,0] #忽略某个下标可以用冒号代替 Out[24]:array([0,12]) In[23]:b[1,2,3] Out[23]:23 In[24]:b[:,0,0] #忽略多个下标可以使用省略号代替 Out[24]:array([0,12]) In[26]:b.ravel() #数组的展平操作 Out[26]: 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]) In[27]:b.flatten() #与revel功能相同,这个函数会请求分配内存来保存结果 Out[27]: 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]) In[30]:b.shape=(6,4) #可以直接对shape属性赋值元组来设置维度 In[31]:b Out[31]: 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]]) In[30]:b.shape=(6,4) #矩阵的转置 In[31]:b Out[31]: 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]])
2.3.组合数组
In[1]:a=arange(9).reshape(3,3) #生成数组对象并改变维度 In[2]:a Out[2]: array([[0,1,2], [3,4,5], [6,7,8]]) In[3]:b=a*2 #对a数组对象所有元素乘2 In[4]:b Out[4]: array([[0, 2, 4], [6, 8,10], [12,14,16]]) ####################### In[5]:hstack((a,b)) #水平组合数组a和数组b Out[5]: array([[0, 1, 2, 0, 2, 4], [3, 4, 5, 6, 8,10], [6, 7, 8,12,14,16]]) In[6]:vstack((a,b)) #垂直组合数组a和数组b Out[6]: array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 2, 4], [6, 8,10], [12,14,16]]) In[7]:dstack((a,b)) #深度组合数组,沿z轴方向层叠组合数组 Out[7]: array([[[0, 0], [1, 2], [2, 4]], [[3, 6], [4, 8], [5,10]], [[6,12], [7,14], [8,16]]])
2.4.分割数组
In[8]:a Out[8]: array([[0,1,2], [3,4,5], [6,7,8]]) In[9]:hsplit(a,3) #将数组沿水平方向分割成三个相同大小的子数组 Out[9]: [array([[0], [3], [6]]), array([[1], [4], [7]]), array([[2], [5], [8]])] In[10]:vsplit(a,3) #将数组沿垂直方向分割成三个子数组 Out[10]:[array([[0,1,2]]),array([[3,4,5]]),array([[6,7,8]])]