python模块numpy的基本使用实例
2019-02-15 17:09
537 查看
- 为什么用numpy?
python中用列表list表示一组值,列表中元素可以是任意类型对象,因此列表中存放的实际上是对象的指针。既要存指针又要存值,因此耗内存和CPU计算时间。
虽然python中还有array类型,里面存放的是值,但它不支持多维,且没有各种运算函数,不适合作数值运算。
numpy是Python的一个科学计算的库,主要提供了矩阵运算功能,可用于大型矩阵的存储和运算。
- 导入numpy模块:import numpy as np
- numpy创建数组
1、快速创建一个以为数组:np.arange(n):得到值为0到n-1的n个元素的数组
[code]>>>np.arange(5) array([0, 1, 2, 3, 4])
2、利用np.array()创建多维数组
[code]#两个以为组合成二维数组 >>>np.array([np.arange(3),np.arange(3)]) array([[0, 1, 2], [0, 1, 2]]) #注意 >>>np.array([np.arange(2),np.arange(3)]) array([array([0, 1]), array([0, 1, 2])], dtype=object) #numpy创建的数组可以直接复制 x = [y for y in range(6)] b=np.array([x]*4) ret=np.array([np.arange(6)]*m)
3、通过reshape(2,3) 改变数组形状
[code]import numpy as np b = np.arange(24).reshape(2,3,4) >>>b 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.shape = (6,4) >>>b 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]])
4、revel()与flatten()将多维数组合成一维,不同在于:flatten()返回的是真实数组,要重新分配空间,而revel()仅改变视图
[code]import numpy as np b = np.arange(24).reshape(2,3,4) >>>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() 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])
- 基本运算
numpy重载了运算符+、-、*、/
[code]#矩阵运算 np.add(a,b) #或 a+b np.subtract(a,b)# 或 a-b np.multiply(a,b) #或 a*b(对应乘) np.dot(a,b) #点乘(矩阵乘法) np.divide(a,b) #或 a/b(对应除) #转置 a.transpose() #或a.T (转置) #矩阵的逆 import numpy as np import numpy.linalg as lg a = np.array([[1,2,3],[4,5,6],[7,8,9]]) ret=lg.inv(a)
- 切片和索引
- s:e 表示选择从下标s到e-1元素
- s:e:d 表示选择从下标s到e-1间隔为d的元素
- 对于多维,用,分隔各维。如二维:0:3 , 4:5 为选择0行到第3行的第4列
[code]>>> a=np.array([[1,2,3],[4,3,2]]) >>>a[1][0] array([4]) >>>a[1,:2] array([4, 3])
- 数组堆叠np.hstack((a,b))、vstack((a,b))、dstack((a,b))
[code]a = np.arange(9).reshape(3,3) b = a*2 # 注意 这里是两层括号 #水平堆叠 np.hstack((a,b)) >>>array([[ 0, 1, 2, 0, 2, 4], [ 3, 4, 5, 6, 8, 10], [ 6, 7, 8, 12, 14, 16]]) #垂直堆叠 >>>np.vstack((a,b)) array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) #深度堆叠 >>>np.dstack((a,b)) array([[[ 0, 0], [ 1, 2], [ 2, 4]], [[ 3, 6], [ 4, 8], [ 5, 10]], [[ 6, 12], [ 7, 14], [ 8, 16]]])
- 数组拆分np.hsplit(a,3)、np.vsplit(a,3)、np.dsplit(a,3) #a为数组,3为拆分到的维度
[code]a= np.arange(9).reshape(3,3) >>>a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) #横向拆分 >>>np.hsplit(a,3) [array([[0],[3], [6]]), . array([[1], [4],[7]]), array([[2],[5], [8]])] #纵向拆分 >>>np.vsplit(a,3) Out: [array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])] #深度拆分,深度拆分要求数组的秩大于等于3 c= np.arange(27).reshape(3,3,3) >>>np.dsplit(c,3) [array([[[ 0], [ 3], [ 6]], [[ 9], [12], [15]], [[18], [21], [24]]]), array([[[ 1], [ 4], [ 7]], [[10], [13], [16]], [[19], [22], [25]]]), array([[[ 2], [ 5], [ 8]], [[11], [14], [17]], [[20], [23], [26]]])]
相关文章推荐
- Python数据挖掘学习02--numpy和pandas模块基本使用
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- python数据持久存储:pickle模块的基本使用
- Python使用email模块对邮件进行编码和解码的实例教程
- python数据持久存储:pickle模块的基本使用
- python optparse模块使用实例
- Python程序中用csv模块来操作csv文件的基本使用教程
- python之numpy的基本使用
- python数据持久存储:pickle模块的基本使用
- python数据持久存储:pickle模块的基本使用
- Python配置文件解析模块ConfigParser使用实例
- Python下rrdtool模块的基本使用方法
- python csv模块使用实例
- python中 numpy的基本使用
- python数据持久存储:pickle模块的基本使用
- 使用Python的urllib和urllib2模块制作爬虫的实例教程
- python中使用smtplib和email模块发送邮件实例
- 在python中的socket模块使用代理实例
- Python的加密模块md5、sha、crypt使用实例
- Python CSV模块使用实例