SciPy的基础知识

本文介绍了SciPy库,它是基于NumPy的扩展,专注于科学计算,包括常数和单位管理、优化算法如最小化函数和寻找方程根,以及稀疏矩阵的处理,如CSR矩阵和图的间接应用。
摘要由CSDN通过智能技术生成

SciPy是基于NumPy开发的一个科学计算库,它提供了更多用于优化、统计和信号处理的使用函数。

1.常数

1.1.打印常量

from scipy import constants
print(constants.pi)

1.2.常量单位

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', 'quecto', 'quetta', 'ronna', 'ronto', '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']

 1.3.单位类别

单位被置于这些类别之下,
公制长度 二进制 质量 角度
时间 英制长度 压力 体积
速度 温度 能量 功率 力

2.优化器

2.1.优化器是scipy中定义的一组程序,他可以找到一个函数的最小值,或者找到一个方程的根。

2.2.从本质上讲,机器学习中的所有算法都不过是一个复杂的方程,需要在给定数据的帮助下将其最小化。

2.3.方程的根

from scipy.optimize import root
from math import cos
def eqn(x):
    return x+cos(x)
myroot=root(eqn,0)
print(myroot.x)
print(myroot)


"""
[-0.73908513]
 message: The solution converged.
 success: True
  status: 1
     fun: [ 0.000e+00]
       x: [-7.391e-01]
  method: hybr
    nfev: 9
    fjac: [[-1.000e+00]]
       r: [-1.674e+00]
     qtf: [-2.668e-13]
"""

2.4.最小化一个函数

在这里,一个函数代表一条曲线,曲线有高点和低点
高点被称为最大值,
低点被称为最小值。
整条曲线上的最高点被称为全局最大值,其余的被称为局部最大值。
整条曲线的最低点称为全局最小值,其余的称为局部最小值。

2.5.寻找最小值

我们可以使用 scipy.optimize.minim() 函数来最小化函数。
minimize()函数接受以下参数。
fun-一个代表方程的函数。
x0--根的初始猜测。
method-要使用的方法的名称。合法值:'CG'

'BFGS'

'牛顿-CG'

'L-BFGS-B'

'TNC'

'COBYLA'

'SLSQP'

calback-每次优化选代后调用的函数

options--个定义额外参数的字典。

{

        "disp":boolean-打印详细的描述

        "gtol":数字 - 错误的容忍度

}

from scipy.optimize import minimize
def eqn(x):
    return x**2+x+2
mymin=minimize(eqn,0,method='BFGS')
print(mymin)


"""
  message: Optimization terminated successfully.
  success: True
   status: 0
      fun: 1.75
        x: [-5.000e-01]
      nit: 2
      jac: [ 0.000e+00]
 hess_inv: [[ 5.000e-01]]
     nfev: 8
     njev: 4
"""

3.稀疏矩阵

3.1.什么是稀疏矩阵

稀疏数据是指那些大部分没有使用的元素(不携带任何信息的元素)的数据它可以是一个像这样的数组。
[1, 0, 2. 0, 0, 3, 0, 0, 0, 0, 0, 0]
稀疏数据:是一个数据集,其中大部分项目的值为零密集数组:是稀疏数组的反面:大部分数值不为零
在科学计算中,当我们在线性代数中处理偏导时,我们会遇到稀疏数据。

3.2.如何处理稀疏数据
SciPy有一个模块,scipy.sparse,提供了处理稀疏数据的函数
我们主要使用两种类型的稀疏矩阵
CSC-压缩稀疏列。用于高效的算术,快速的列切分。

CSR-压缩稀疏行。用于快速的行切分,更快的矩阵向量乘积。

3.3.CSR矩阵

import numpy as np
from scipy.sparse import csr_matrix
arr=np.array([0,0,1,1,0,2])
print(csr_matrix(arr))



"""
  (0, 2)	1
  (0, 3)	1
  (0, 5)	2
"""

 3.4.稀疏矩阵的方法

  1. 压缩存储:将矩阵中的零元素去掉,只存储非零元素及其位置信息。这种方法可以大大减少存储空间,但可能带来更高的计算复杂度。具体实现上,可以使用三元组线性表表示稀疏矩阵,这种表示法能够只存储非零元素及其对应的行下标和列下标,从而大大节省存储空间。
  2. 稀疏矩阵乘法:由于矩阵中大部分元素为零,我们可以只计算非零元素的乘积,从而加快计算速度。
  3. 迭代法求解:对于稀疏矩阵,我们通常采用迭代法求解线性方程组。这种方法具有高效、可扩展等优点。

4.图

SciPy库中的图并不是直接提供的特性,但SciPy包含许多数学和科学计算的工具,这些工具在图形和网络分析中可能会非常有用。特别是,SciPy包含线性代数、优化、插值、积分等功能,这些都可以在处理图形和网络数据时发挥作用。

尽管SciPy本身可能不直接提供图的实现,但我们可以使用SciPy库中的函数来处理图的数学表示,例如邻接矩阵。邻接矩阵是表示图中顶点之间相邻关系的矩阵,这种矩阵可以视为一个二维数组,其中每个元素表示图中两个顶点之间的连接关系。SciPy的NumPy库提供了强大的数组操作功能,非常适合处理这种形式的数据。

虽然SciPy本身可能不直接提供图的实现,但它提供的数学和科学计算工具使得处理图形数据变得更加容易和高效。通过结合SciPy和其他相关库,可以实现复杂的图形分析和处理任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值