• runoobscipy(python)


    https://www.runoob.com/scipy/scipy-tutorial.html

    SciPy 教程

    SciPy 是一个开源的 Python 算法库和数学工具包。

    Scipy 是基于 Numpy 的科学计算库,用于数学、科学、工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy。

    SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

    SciPy 应用

    Scipy 是一个用于数学、科学、工程领域的常用软件包,可以处理最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解器等。 。

    SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。

    NumPy 和 SciPy 的协同工作可以高效解决很多问题,在天文学、生物学、气象学和气候科学,以及材料科学等多个学科得到了广泛应用。

    SciPy 安装

    本章节,我们使用 pip 工具来安装 SciPy 库,如果还未安装该工具,可以参考 Python pip 安装与使用

    升级 pip:

    python3 -m pip install -U pip

    安装 scipy 库:

    python3 -m pip install -U scipy

    安装完成后,我们就可以通过 from scipy import module 来导入 scipy 的库:

    constants 是 scipy 的常量模块。

    from scipy import constants

    以下实例,我们通过导入 scipy 库,然后查看 scipy 库的版本号:

    实例

    import scipy

    print(scipy.__version__)
     

    SciPy 模块列表

    以下列出了 SciPy 常用的一些模块及官网 API 地址:

    模块名功能参考文档
    scipy.cluster 向量量化 cluster API
    scipy.constants 数学常量 constants API
    scipy.fft 快速傅里叶变换 fft API
    scipy.integrate 积分 integrate API
    scipy.interpolate 插值 interpolate API
    scipy.io 数据输入输出 io API
    scipy.linalg 线性代数 linalg API
    scipy.misc 图像处理 misc API
    scipy.ndimage N 维图像 ndimage API
    scipy.odr 正交距离回归 odr API
    scipy.optimize 优化算法 optimize API
    scipy.signal 信号处理 signal API
    scipy.sparse 稀疏矩阵 sparse API
    scipy.spatial 空间数据结构和算法 spatial API
    scipy.special 特殊数学函数 special API
    scipy/stats 统计函数 stats.mstats API

    更多模块内容可以参考官方文档:https://docs.scipy.org/doc/scipy/reference/

    SciPy 常量模块

    SciPy 常量模块 constants 提供了许多内置的数学常数。

    圆周率是一个数学常数,为一个圆的周长和其直径的比率,近似值约等于 3.14159,常用符号  来表示。

    以下实例输出圆周率:

    实例

    from scipy import constants

    print(constants.pi)

    执行以上代码,输出结果如下:

    3.141592653589793

    以下实例输出黄金比例:

    实例

    from scipy import constants

    print(constants.golden)

    执行以上代码,输出结果如下:

    1.618033988749895

    我们可以使用 dir() 函数来查看 constants 模块包含了哪些常量:

    实例

    from scipy import constants

    print(dir(constants))

    执行以上代码,输出结果如下:

    ['Avogadro', 'Boltzmann', 'Btu', ...]

    单位类型

    常量模块包含以下几种单位:

    SciPy Matlab 数组

    NumPy 提供了 Python 可读格式的数据保存方法。

    SciPy 提供了与 Matlab 的交互的方法。

    SciPy 的 scipy.io 模块提供了很多函数来处理 Matlab 的数组。

    以 Matlab 格式导出数据

    savemat() 方法可以导出 Matlab 格式的数据。

    该方法参数有:

    • filename - 保存数据的文件名。
    • mdict - 包含数据的字典。
    • do_compression - 布尔值,指定结果数据是否压缩。默认为 False。

    将数组作为变量 "vec" 导出到 mat 文件:

    实例

    from scipy import io
    import numpy as np

    arr = np.arange(10)

    io.savemat('arr.mat', {"vec": arr})

    注意:上面的代码会在您的计算机上保存了一个名为 "arr.mat" 的文件。

    导入 Matlab 格式数据

    loadmat() 方法可以导入 Matlab 格式数据。

    该方法参数:

    • filename - 保存数据的文件名。

    返回一个结构化数组,其键是变量名,对应的值是变量值。

    以下实例从 mat 文件中导入数组:

    实例

    from scipy import io
    import numpy as np

    arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])

    # 导出
    io.savemat('arr.mat', {"vec": arr})

    # 导入
    mydata = io.loadmat('arr.mat')

    print(mydata)

    返回结果如下:

    {
       '__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Tue Sep 22 13:12:32 2020',
       '__version__': '1.0',
       '__globals__': [],
       'vec': array([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
     }

    使用变量名 "vec" 只显示 matlab 数据的数组:

    实例

    from scipy import io
    import numpy as np

    arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])

    # 导出
    io.savemat('arr.mat', {"vec": arr})

    # 导入
    mydata = io.loadmat('arr.mat')

    print(mydata['vec'])

    返回结果如下:

    [[0 1 2 3 4 5 6 7 8 9]]

    从结果可以看出数组最初是一维的,但在提取时它增加了一个维度,变成了二维数组。

    解决这个问题可以传递一个额外的参数 squeeze_me=True:

    实例

    from scipy import io
    import numpy as np

    arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9,])

    # 导出
    io.savemat('arr.mat', {"vec": arr})

    # 导入
    mydata = io.loadmat('arr.mat', squeeze_me=True)

    print(mydata['vec'])

    返回结果如下:

    [0 1 2 3 4 5 6 7 8 9]
  • 相关阅读:
    [BZOJ3751] [NOIP2014] 解方程 (数学)
    [BZOJ4198] [Noi2015] 荷马史诗 (贪心)
    [BZOJ4034] [HAOI2015] T2 (树链剖分)
    [BZOJ1880] [Sdoi2009] Elaxia的路线 (SPFA & 拓扑排序)
    [BZOJ1088] [SCOI2005] 扫雷Mine
    [BZOJ1004] [HNOI2008] Cards (Polya定理)
    [BZOJ1009] [HNOI2008] GT考试 (KMP & dp & 矩阵乘法)
    [BZOJ1503] [NOI2004] 郁闷的出纳员 (treap)
    [BZOJ1059] [ZJOI2007] 矩阵游戏 (二分图匹配)
    BZOJ2626: JZPFAR
  • 原文地址:https://www.cnblogs.com/hanease/p/16041947.html
Copyright © 2020-2023  润新知