扩展库SciPy
- 特征
- 基于
Python的软件生态系统 - 开源第三方
- 主要为数学,科学和工程服务
- 基于
- 核心库:
NumpySciPy libraryMatplotlibIPythonSympypandas - 官网:
scipy.org资源丰富 SCIPy中的数据结构ndarrayN维数组Series变长字典DataFrame数据框
NumPy
-
特征
-
强大的
ndarray对象和ufunc函数 -
精巧的函数
-
适合线性代数和随机数处理等科学计算
-
有效的通用多维数据 可定义为任意数据类型
-
无缝对接数据库
import numpy as np aArray=np.ones((4,4)) aArray Out[3]: array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]) from scipy import linalg #导入scipy核心库中和线性代数有关模块 arr=np.array([[1,2],[3,4]]) linalg.det(arr) #计算行列式 Out[6]: -2.0 linalg.det(aArray) Out[7]: 0.0
-
Matplotlib
- 特征
- 基于
NumPy - 二维绘图库 简单快速地生成曲线图 直方图和散点图等形式的图
- 常用的
pyplot是一个简单提供类似MATLAB接口的模块
- 基于
pandas
- 特征
- 基于
SciPyNumPy - 高效的
Series和DataFrame数据结构 - 强大的可扩展数据操作与分析的
Python库 - 高效处理大数据集的切片等功能
- 提供优化库功能读写多种文件格式 如
CVS HDF5
- 基于
ndarray数据结构
-
python中的数组- 形式
- 用
list和tuple等序列数据结构结构表示的数组 array模块 (非内置模块 不支持多维)- 通过
array函数创建数组 ,array.array('B',range(5)) - 提供
appendinsertread等方法
- 通过
- 用
- 形式
-
ndarray-
特点
- N维数组
NumPy中基本的数据结构- 所有元素是同一种类型 不像列表那样包含多类但存大量指针和空间
- 别名为
array - 利于节省内存和提高
CPU计算时间 - 有丰富的函数
-
基本概念
- 维度 成为轴 轴的个数称为秩
- 基本属性
ndarray.ndim秩ndiarray.shape维度ndarray.size元素总个数ndarray.dtype元素类型ndarray.itemsize元素字节大小
-
创建与使用
import numpy as np aArray=np.array([1,2,3]) aArray Out[3]: array([1, 2, 3]) bArray=np.array([(1,2,3),(4,5,6)]) bArray Out[5]: array([[1, 2, 3], [4, 5, 6]]) np.arange(1,5,0.6) Out[7]: array([1. , 1.6, 2.2, 2.8, 3.4, 4. , 4.6]) np.random.random((2,2)) Out[8]: array([[0.52820866, 0.42113216], [0.48049641, 0.5325641 ]]) np.linspace(1,2,10,endpoint=False) Out[9]: array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]) np.ones([2,3]) Out[10]: array([[1., 1., 1.], [1., 1., 1.]]) np.zeros([2,3]) Out[11]: array([[0., 0., 0.], [0., 0., 0.]]) np.fromfunction(lambda i,j:(i+1)*(j+1),(9,9)) Out[12]: array([[ 1., 2., 3., 4., 5., 6., 7., 8., 9.], [ 2., 4., 6., 8., 10., 12., 14., 16., 18.], [ 3., 6., 9., 12., 15., 18., 21., 24., 27.], [ 4., 8., 12., 16., 20., 24., 28., 32., 36.], [ 5., 10., 15., 20., 25., 30., 35., 40., 45.], [ 6., 12., 18., 24., 30., 36., 42., 48., 54.], [ 7., 14., 21., 28., 35., 42., 49., 56., 63.], [ 8., 16., 24., 32., 40., 48., 56., 64., 72.], [ 9., 18., 27., 36., 45., 54., 63., 72., 81.]]) x=np.fromfunction(lambda i,j:(i+1)*(j+1),(9,9)) x.ndim Out[14]: 2 x.shape Out[15]: (9, 9) x.size Out[16]: 81bArray Out[18]: array([[1, 2, 3], [4, 5, 6]]) print(bArray[1]) [4 5 6] print(bArray[0:2]) #切片 选择0和1行 [[1 2 3] [4 5 6]] print(bArray[:,[0,1]]) #选择第0和1列 [[1 2] [4 5]] print(bArray[1,[0,1]]) #选择第1行 第0和1列 [4 5] for row in bArray: print(row) [1 2 3] [4 5 6] print(bArray.reshape(3,2)) #原多维数组不改变 [[1 2] [3 4] [5 6]] bArray.resize(3,2) #改变多维数组本身 bArray Out[27]: array([[1, 2], [3, 4], [5, 6]]) bArray=np.array([1,2,3]) cArray=np.array([4,5,6]) np.vstack((bArray,cArray)) #在垂直方向拼接 Out[30]: array([[1, 2, 3], [4, 5, 6]]) np.hstack((bArray,cArray)) #在水平方向拼接 Out[31]: array([1, 2, 3, 4, 5, 6]) -
ndarray的运算aArray=np.array([(5,5,5),(2,2,2)]) bArray=np.array([(5,5,5),(1,2,3)]) cArray=aArray*bArray cArray Out[36]: array([[25, 25, 25], [ 2, 4, 6]]) aArray+=bArray aArray Out[38]: array([[10, 10, 10], [ 3, 4, 5]]) a=np.array([1,2,3]) b=np.array([[1,2,3],[4,5,6]]) a+b #广播 Out[42]: array([[2, 4, 6], [5, 7, 9]]) b.sum() Out[45]: 21 b.sum(axis=0) Out[46]: array([5, 7, 9]) b.sum(axis=1) Out[47]: array([ 6, 15]) b.mean() #平均值 Out[48]: 3.5 b.var() #方差 Out[49]: 2.9166666666666665 b.std() #标准差 Out[50]: 1.707825127659933 -
naarray的专门应用 - 线性代数-
dot矩阵内积linalg.det行列式linalg.inv逆矩阵linalg.solve多元一次方程求根linalg.eig求特征值和特征向量import numpy as np x=np.array([[1,2],[3,4]]) r1=np.linalg.det(x) r1 Out[53]: -2.0000000000000004 r2=np.linalg.inv(x) r2 Out[55]: array([[-2. , 1. ], [ 1.5, -0.5]]) r3=np.dot(x,x) r3 Out[57]: array([[ 7, 10], [15, 22]])
-
-
ndarray的ufunc函数- 一种可以对数组的每个元素进行操作的函数 很多是基于
C语言级别实现 计算速度很快
- 一种可以对数组的每个元素进行操作的函数 很多是基于
-
2912

被折叠的 条评论
为什么被折叠?



