scipy

AI 基础:Scipy(科学计算库) 简易入门

空扰寡人 提交于 2020-12-28 11:38:40
0.导语 Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。 Scipy是由针对特定任务的子模块组成: 在此之前,我已经写了以下几篇AI基础的快速入门,本篇文章讲解科学计算库Scipy快速入门: 已发布: AI 基础:Numpy 简易入门 AI 基础:Pandas 简易入门 AI基础:数据可视化简易入门(matplotlib和seaborn) 备注:本文代码可以在github下载 https://github.com/fengdu78/Data-Science-Notes/tree/master/4.scipy 1.SciPy-数值计算库 import numpy as np import pylab as pl import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] import scipy scipy.__version__#查看版本 '1.0.0' 常数和特殊函数 from scipy import constants as C print (C.c) # 真空中的光速 print (C.h) # 普朗克常数 299792458.0 6

Understanding scipy integrate's internal behavior

允我心安 提交于 2020-12-27 05:34:56
问题 I am trying to understand what scipy.integrate is doing internally. Namely, it seems that something weird and inconsistent is happening. How get it working properly? I need it to perform one integration step at a time, because I do some stuff with t inside the ODE and need it to be consistent So, here is my MWE import numpy as np from scipy.integrate import ode t0 = 0 t1 = 1 def myODE(t, x): print('INTERNAL t = {time:2.3f}'.format(time=t)) Dx = np.zeros([2, 1]) Dx[0] = -x[0]**2 Dx[1] = -x[1]*

Understanding scipy integrate's internal behavior

戏子无情 提交于 2020-12-27 05:33:12
问题 I am trying to understand what scipy.integrate is doing internally. Namely, it seems that something weird and inconsistent is happening. How get it working properly? I need it to perform one integration step at a time, because I do some stuff with t inside the ODE and need it to be consistent So, here is my MWE import numpy as np from scipy.integrate import ode t0 = 0 t1 = 1 def myODE(t, x): print('INTERNAL t = {time:2.3f}'.format(time=t)) Dx = np.zeros([2, 1]) Dx[0] = -x[0]**2 Dx[1] = -x[1]*

equivalence scipy.signal welch to matlab pwelch

寵の児 提交于 2020-12-25 05:19:34
问题 I have the following MATLAB code to compute the PSD of a signal: x = linspace(0, 10, 100001); dt = x(2) - x(1); Fs = 1 / dt; a1 = 1; f1 = 500; a2 = 10; f2 = 2000; y = a1 * sin(2*pi*f1*x) + a2 * sin(2*pi*f2*x); nblock=1024; overlap=128; windowsel=hann(nblock); [Pxx,f]=pwelch(y,windowsel,overlap,nblock,Fs,'onesided'); figure() semilogy(f,Pxx, '-o') I have tried to reproduce the same calculation using welch in scipy.signal . However, for low frequency, the behavior is clearly not the same. I

equivalence scipy.signal welch to matlab pwelch

随声附和 提交于 2020-12-25 05:15:35
问题 I have the following MATLAB code to compute the PSD of a signal: x = linspace(0, 10, 100001); dt = x(2) - x(1); Fs = 1 / dt; a1 = 1; f1 = 500; a2 = 10; f2 = 2000; y = a1 * sin(2*pi*f1*x) + a2 * sin(2*pi*f2*x); nblock=1024; overlap=128; windowsel=hann(nblock); [Pxx,f]=pwelch(y,windowsel,overlap,nblock,Fs,'onesided'); figure() semilogy(f,Pxx, '-o') I have tried to reproduce the same calculation using welch in scipy.signal . However, for low frequency, the behavior is clearly not the same. I

《大秦赋》最近很火!于是我用Python抓取了“相关数据”,发现了这些秘密......

二次信任 提交于 2020-12-22 05:44:26
为什么需要加星标? 由于 微信公众号出现了 “乱序” 排列 的状况,也就是说: 文章不会按照 “时间顺序” 推送给你。 那么朋友们就不能第一时间,收到我的干货 。因此希望 您抽出一分钟,完成如下三步 。 01 02 03 1845 人已添加“ 星标 ” 文末获取“本文代码” 前言 最近,最火的电视剧莫过于《大秦赋了》,自12月1日开播后,收获了不错的口碑。然而随着电视剧的跟新,该剧在网上引起了 激烈的讨论 ,不仅口碑急剧下滑,颇有 高开低走的趋势 ,同时该剧的评分也由最初的8.9分,下降到了现在的6.5分。 虽然我还没有看过这个新剧,但是对于小伙伴们讨论的内容,却颇有兴趣(主要还是大家老是讨 论这个剧)。因此, 我用Python爬取了《大秦赋》的相关数据 ,进行了一波分析。 数据爬取 巧妇难为无米之炊,做数据分析之前最重要的就是 “数据获取” 。于是,我准备用Python爬取豆瓣上的 短评数据 以及一些 评论时间信息 、 评价星级信息 。 关于数据的爬取主要说以下几个内容: 1) 关于翻页操作 第一页: https://movie.douban.com/subject/ 26413293 /comments?status=P 第二页: https://movie.douban.com/subject/ 26413293 /comments?start= 20 &limit= 20

如何利用Python做数据分析 需要学习哪些知识

ぐ巨炮叔叔 提交于 2020-12-17 13:33:05
根据调查结果,十大最常用的数据工具中有八个来自或利用Python。Python广泛应用于所有数据科学领域,包括数据分析、机器学习、深度学习和数据可视化。不过你知道如何利用Python做数据分析吗?需要学习哪些知识?下面就给大家讲解一下。 与数据分析相关的Python库很多,比如Numpy、pandas、matplotlib、scipy等,数据分析的操作包括数据的导入和导出、数据筛选、数据描述、数据处理、统计分析、可视化等等。接下来我们看一下如何利用Python完成数据的分析。 生成数据表 常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据,Python支持从多种类型的数据导入。在开始使用Python进行数据导入前需要先导入pandas库,为了方便起见,我们也同时导入Numpy库。代码是最简模式,里面有很多可选参数设置,例如列名称、索引列、数据格式等等。 检查数据表 Python中使用shape函数来查看数据表的维度,也就是行数和列数。你可以使用info函数查看数据表的整体信息,使用dtypes函数来返回数据格式。Isnull是Python中检验空值的函数,你可以对整个数据表进行检查,也可以单独对某一列进行空值检查,返回的结果是逻辑值,包含空值返回True,不包含则返回False。使用unique函数查看唯一值,使用Values函数用来查看数据表中的数值。 数据表清洗

用python做线性规划的几种工具包和入门介绍

依然范特西╮ 提交于 2020-12-17 10:35:25
本文介绍三种常见的python做线性规划的工具包:scipy、pulp、cvxpy,后面2个包也支持整数规划(Integer Program)、01规划(Binary Program)还是混合整数线性规划(MILP)。 一、scipy做线性规划 1、scipy简单介绍 scipy库是个功能很强大的包,可以通过调用optimize.linprog函数解决简单的线性规划: scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method=‘simplex’, callback=None, options=None) c指的应该是要求最大值的函数的系数数组,A_ub是应该是不等式未知量的系数矩阵,【注意:来这不等式指的是<=的不等式,那如果是>=,就需要乘个负号】。A_eq就是其中等式的未知量系数矩阵了。B_ub就是不等式的右边了,B_eq就是等式右边了。bounds的话,指的就是每个未知量的范围了。 2、案例 题目: 代码示例: from scipy import optimize as op import numpy as np c = np . array ( [ 2 , 3 , - 5 ] ) A_ub = np . array ( [ [ - 2 , 5 , - 1

1D Wasserstein distance in Python

痴心易碎 提交于 2020-12-13 05:25:50
问题 The formula below is a special case of the Wasserstein distance/optimal transport when the source and target distributions, x and y (also called marginal distributions) are 1D, that is, are vectors. where F^{-1} are inverse probability distribution functions of the cumulative distributions of the marginals u and v , derived from real data called x and y , both generated from the normal distribution: import numpy as np from numpy.random import randn import scipy.stats as ss n = 100 x = randn(n

1D Wasserstein distance in Python

久未见 提交于 2020-12-13 05:24:03
问题 The formula below is a special case of the Wasserstein distance/optimal transport when the source and target distributions, x and y (also called marginal distributions) are 1D, that is, are vectors. where F^{-1} are inverse probability distribution functions of the cumulative distributions of the marginals u and v , derived from real data called x and y , both generated from the normal distribution: import numpy as np from numpy.random import randn import scipy.stats as ss n = 100 x = randn(n