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]])]