scipy学习

常量

from scipy import constants
print(dir(constants))

# ['Avogadro', 'Boltzmann', 'Btu', 'Btu_IT', 'Btu_th', 'ConstantWarning', 'G', 'Julian_year', 'N_A', 'Planck', 'R', 'Rydberg', 'Stefan_Boltzmann', 'Wien', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_codata', '_constants', '_obsolete_constants', 'acre', 'alpha', 'angstrom', 'arcmin', 'arcminute', 'arcsec', 'arcsecond', 'astronomical_unit', 'atm', 'atmosphere', 'atomic_mass', 'atto', 'au', 'bar', 'barrel', 'bbl', 'blob', 'c', 'calorie', 'calorie_IT', 'calorie_th', 'carat', 'centi', 'codata', 'constants', 'convert_temperature', 'day', 'deci', 'degree', 'degree_Fahrenheit', 'deka', 'dyn', 'dyne', 'e', 'eV', 'electron_mass', 'electron_volt', 'elementary_charge', 'epsilon_0', 'erg', 'exa', 'exbi', 'femto', 'fermi', 'find', 'fine_structure', 'fluid_ounce', 'fluid_ounce_US', 'fluid_ounce_imp', 'foot', 'g', 'gallon', 'gallon_US', 'gallon_imp', 'gas_constant', 'gibi', 'giga', 'golden', 'golden_ratio', 'grain', 'gram', 'gravitational_constant', 'h', 'hbar', 'hectare', 'hecto', 'horsepower', 'hour', 'hp', 'inch', 'k', 'kgf', 'kibi', 'kilo', 'kilogram_force', 'kmh', 'knot', 'lambda2nu', 'lb', 'lbf', 'light_year', 'liter', 'litre', 'long_ton', 'm_e', 'm_n', 'm_p', 'm_u', 'mach', 'mebi', 'mega', 'metric_ton', 'micro', 'micron', 'mil', 'mile', 'milli', 'minute', 'mmHg', 'mph', 'mu_0', 'nano', 'nautical_mile', 'neutron_mass', 'nu2lambda', 'ounce', 'oz', 'parsec', 'pebi', 'peta', 'physical_constants', 'pi', 'pico', 'point', 'pound', 'pound_force', 'precision', 'proton_mass', 'psi', 'pt', 'short_ton', 'sigma', 'slinch', 'slug', 'speed_of_light', 'speed_of_sound', 'stone', 'survey_foot', 'survey_mile', 'tebi', 'tera', 'test', 'ton_TNT', 'torr', 'troy_ounce', 'troy_pound', 'u', 'unit', 'value', 'week', 'yard', 'year', 'yobi', 'yocto', 'yotta', 'zebi', 'zepto', 'zero_Celsius', 'zetta']

单位类别

公制长度、二进制、质量、角度、时间、压力、面积、体积、速度、温度、能量、功率、力

公制长度
# 以m为单位
print(constants.kilo)   # 1000.0
print(constants.micro)  # 1e-06   
二进制
# 以Byte为单位
print(constants.kibi)  # 1024
质量
# 以kg为单位
print(constants.gram)  # 0.001
print(constants.metric_ton) # 1000.0
角度
# 以弧度为单位
print(constants.degree)  # 0.017453292519943295
时间
# 以s为单位
print(constants.hour)  # 3600.0
压力
# 以Pa为单位
print(constants.atmosphere)  # 101325.0
面积
# 以平方米为单位
print(constants.acre)  # 4046.8564223999992
体积
# 以弧度为单位
print(constants.degree)  # 0.017453292519943295

优化器

可以找到函数最小值,或找到方程的根
优化函数:机器学习中所有算法就是复杂的方程,需要在给定数据的帮助下将其最小化
方程的根:numpy能找到多项式和线性方程的根,但是找不到非线性方程的根。因此需要使用scipy的optimze.root函数

from scipy.optimize import root
from math import cos

myroot = root(lambda x: x+cos(x), 0)  # parm1 待求函数;parm2 根的初始猜测
print(myroot)
"""
fjac: array([[-1.]])
     fun: array([0.])
 message: 'The solution converged.'
    nfev: 9
     qtf: array([-2.66786593e-13])
       r: array([-1.67361202])
  status: 1
 success: True
       x: array([-0.73908513])
"""

函数最小值:使用scipy的optimze.minimize函数

minimize(fun, x0, method, callback)
x0: 根的初始猜测
method: 要使用的方法名称
{'CG', 'BFGS', '牛顿-CG', 'TNC', 'COBYLA', 'SLSQP', 'L-BFGS-B'}
callback: 每次优化迭代后调用的函数
options: 额外参数

稀疏矩阵

线代中处理偏导会用到稀疏矩阵
sparse用来处理稀疏矩阵
稀疏矩阵类型:

  1. CSC 压缩列
  2. CSR 压缩行

CSR稀疏矩阵

import numpy as np
from scipy.sparse import csr_matrix
arr = np.array([[0,0,0],[0,0,1],[1,0,2]])
print(csr_matrix(arr).count_nonzero())     # 3
print(csr_matrix(arr).eliminate_zeros())   # (1, 2) 1   (2,0) 1   (2,2) 2  消除矩阵0项
print(csr_matrix(arr).tocsc())             # 转成csc

sparse.csgraph用来处理图

连通区域

用connected_components找到所有连通区域

import numpy as np
from scipy.sparse import csr_matrix
form scipy.sparse.csgraph import connected_components

arr = np.arr([[0,1,2], [1,0,0], [2,0,0]])
"""
二叉树图: 
	   [A]
    1        2
[B]				[C]
"""
graph = csr_matrix(arr)
print(connected_components(graph))    # (1, [0, 0, 0]) 一个连通区域,三个元素都是一维

dijkstra

从图中找两个元素的最短路径

from scipy.sparse.csgraph import dijkstra
print(dijkstra(graph, indices=0))    # indices: 元素索引     [0. 1. 2.]  第0个元素到第1个元素距离为1

floyd

从图中找两个元素的最短路径

from scipy.sparse.csgraph import floyd_warshall
print(floyd_warshall(graph))
"""
[[0. 1. 2.]
 [1. 0. 3.]
 [2. 3. 0.]]
"""

bellman

从图中找两个元素的最短路径,且可以处理负权重

from scipy.sparse.csgraph import bellman_ford
print(bellman_ford(graph, indices=0))    # indices: 元素索引     [0. 1. 2.]  第0个元素到第1个元素距离为1

深度优先

返回一个节点的深度优先遍历

from scipy.sparse.csgraph import depth_first_order
print(depth_first_order(graph, 0))    # indices: 遍历起始元素     [0, 1, 2], [-9999, 0, 0]

广度优先

返回一个节点的广度优先遍历

from scipy.sparse.csgraph import breadth_first_order
print(breadth_first_order(graph, 0))    # indices: 遍历起始元素     [0, 1, 2], [-9999, 0, 0]

空间数据

spatial模块,处理几何空间中表示的数据

三角测量

将多边形划分为多个三角形,再求其面积之和

from scipy.spatial import Delaunay

points = np.array([[2,4], [3,4], [3,0], [2,2], [4,1]])
simplices = Delaunay(points).simplices
print(simplices)
"""
三角形顶点索引
[[3 2 4]
 [3 1 0]
 [1 3 4]]
"""

凸面体

可以求到覆盖所有给定点的最小的平面多边形

from scipy.spatial import ConvexHull
hull = ConvexHull(points)

KDTree

是为最近的邻居查询而优化的数据结构
在点集中,使用KDTree可以查询在平面上到哪些点距离某给定点最近

kdtree = KDTree(points)
print(kdtree.query(1,1)) # 查询点集里到(1,1)最近的点

MATLAB

scipy.io模块可以与matlab一起工作
savemat()/loadmat()可以以matlab格式导出/导入数据

io.savemat(file_name, {"vec": arr})
data = io.loadmat(file_name, squeeze_me=True)

插值法

是在给定点之间生成点的方法,interpolate模块
在机器学习中常用来处理数据集中缺失的数据,或是需要得到平滑数据集的情况

一维插值

from scipy.interpolate import interp1d
import numpy as np

xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1
interp_func = interp1d(xs, ys)
zs = np.arange(2.1, 3, 0.1)
new_arr = interp_func(zs)
# 由[2.1  2.2  2.3 ...] 变成了 [6.33 6.75 7.17 ...]

不同的插值方法得到的值不一样。在一维插值中,点被拟合为一条曲线;在样条插值中,点被拟合为由多项式定义的片状函数;在径向基函数的插值中,径向基函数是一个对应于固定参考点定义的函数

假设检验

stats模块,用于执行统计学意义的测试

T检验:用于确定两个变量平均值之间是否存在明显差异,并知道是否属于同一分布。是双尾检验
KS测试:用于检查给定值是否遵循分布

数据统计描述

查看一组数据的数值摘要,可以使用describe(),返回观测值数量、最值、平均值、方差、偏度等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值