前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Python杂七杂八的小东西(搭建Pycharm+Anaconda、删除文档首行小程序、皮尔逊相关系数小程序)

关于Python杂七杂八的小东西(搭建Pycharm+Anaconda、删除文档首行小程序、皮尔逊相关系数小程序)

作者头像
bear_fish
发布2018-09-19 15:56:44
5850
发布2018-09-19 15:56:44
举报

  好久没有回来更新博客了,良心难安啊!最近要做脑电信号的分析,由于导出的数据都是文本格式的,就下定决心放弃Matlab,用Python做分析,确实是挺好用的。下面就把我期间用到的杂七杂八的东西列出来,作为备忘和给需要的朋友的参考吧。

一、搭建Pycharm+Anaconda

  我之前用的是Anaconda自带的Spyder编译器,界面还是很友好的,与Matlab高度相似。我觉得最实用的功能就是可以看得到变量的内容,这一点比较类似于Matlab。举个例子,如果我们定义一个矩阵Data,Spyder就可以很方便的看到Data里面的具体内容。但是Spyder用于工程开发的话就不是很适合了,所以我决定改用Pycharm+Anaconda。我的看法是如果用Python做科研的话还是用Spyder比较好,做工程的话最好用Pycharm+Anaconda,两者之间并不存在哪一个绝对比另一个好的问题。    Anaconda里面集成了很多关于python科学计算的第三方库,避免了自行安装库的麻烦,一步到位,特别好用。Pycharm是一个很好的用于开发的IDE,界面友好,使用方便,主要的缺点是在科学计算方面略有欠缺,这个缺点正好由Anaconda补上。

1、下载Anaconda

  在官网按自己的需求下载,官网链接https://www.continuum.io/downloads 。下载之后按部就班安装就好。 

这里写图片描述
这里写图片描述
2、下载Pycharm

  同样是到官网按自己的需求下载,官网链接http://www.jetbrains.com/pycharm/download/#section=windows。下载之后按部就班安装就好。这里建议如果不是特别专业的朋友选社区版(Community)就好了,毕竟社区版是免费的并且功能也足够用了。 

这里写图片描述
这里写图片描述
3、配置环境

  都下载安装完毕之后,打开Pycharm,选择File菜单下的Settings选项,找到Project–Project Interpreter。将图中红圈里面的路径更改为之前安装Anaconda路径下的python.exe的路径。如果这里找不到我们安装Anaconda的路径,点击旁边的小齿轮,选择“Add Local”,就可以自行添加了。这时候会发现下面出现了一大堆库,这些库都是Anaconda带给我们的,极大地节约了下载安装库的时间。至此Pycharm+Anaconda搭建完毕。 

这里写图片描述
这里写图片描述

二、删除文档首行小程序

  代码如下所示,中心思想是新建一个文档,将原文档中第一行以下的数据写入新文档中。用到的核心函数是'a'.join(b),其作用是以a作为分隔符,将b所有的元素合并成一个新的字符串。

代码语言:javascript
复制
<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'''删除EEG文件的前两行'''</span>
<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">delstring</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(filename)</span>:</span>
    fin = open(filename)
    raw = fin.readlines() 
    fout = open(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'new'</span>+filename,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'w'</span>)
    new =<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">''</span>.join(raw[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:])           <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 'a'.join(b) 以a作为分隔符,将b所有的元素合并成一个新的字符串</span>
    fout.write(new)
    fin.close()
    fout.close()
</code><ul class="pre-numbering eye-protector-processed" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgba(0, 0, 0, 0.34902); list-style: none; text-align: right; transition: background 0.3s ease; background-color: rgb(193, 230, 198);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li></ul>

三、皮尔逊相关系数小程序

  这个小程序是参考http://www.cnblogs.com/ryuham/p/4764015.html写出来的,可以用来求两段信号的皮尔逊相关系数。说到皮尔逊相关系数,根据http://changfengmingzhi.blog.163.com/blog/static/1671052882014101810481936/里面的描述,摘抄出如下定义:  在统计学中,皮尔逊积矩相关系数(Pearson product-moment correlation coefficient)用于度量两个变量X和Y之间的相关(线性相关),其值介于-1与1之间。系数的值为1意味着X 和 Y可以很好的由直线方程来描述,所有的数据点都很好的落在一条 直线上,且 Y 随着 X 的增加而增加。系数的值为-1意味着所有的数据点都落在直线上,且 Y 随着 X 的增加而减少。系数的值为0意味着两个变量之间没有线性关系。当两个变量独立时,相关系数为0,但反之并不成立。 这是因为相关系数仅仅反映了两个变量之间是否线性相关。比如说,X是区间[-1,1]上的一个均匀分布的随机变量,而 Y=X2. 那么Y是完全由X确定。因此Y 和X是不独立的,但是相关系数为0。

  皮尔逊相关系数的计算公式为:

∑ xiyi−∑ xi∑ yin∑ x2i−(∑ xi)2n−−−−−−−−−−−−√∑ y2i−(∑ yi)2n−−−−−−−−−−−−√

  代码实现如下:

代码语言:javascript
复制
<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: "Source Code Pro", monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'''两段信号的皮尔逊相关性分析'''</span>

<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'''求乘积之和'''</span>
<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">multipl</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(a,b)</span>:</span>
    sumofab = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.0</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> i <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> range(len(a)):
        temp = a[i] * b[i]
        sumofab += temp
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> sumofab

<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'''求皮尔逊相关系数'''</span>
<span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">corrcoef</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(x, y)</span>:</span>
    n = len(x)
    sum1 = sum(x)
    sum2 = sum(y)            <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 求和</span>
    sumofxy = multipl(x,y)   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 求乘积之和</span>
    sumofx2 = sum([pow(i, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> i <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> x])
    sumofy2 = sum([pow(j, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> j <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> y])    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 求平方和</span>
    num = sumofxy - (float(sum1) * float(sum2) / n)
    den = sqrt((sumofx2 - float(pow(sum1, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)) / n) * (sumofy2 - float(pow(sum2, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)) / n))  <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 计算皮尔逊相关系数</span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> list(map(float,num / den))
</code><ul class="pre-numbering eye-protector-processed" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right: 1px solid rgba(0, 0, 0, 0.34902); list-style: none; text-align: right; transition: background 0.3s ease; background-color: rgb(193, 230, 198);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li></ul>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年08月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、搭建Pycharm+Anaconda
    • 1、下载Anaconda
      • 2、下载Pycharm
        • 3、配置环境
        • 二、删除文档首行小程序
        • 三、皮尔逊相关系数小程序
        相关产品与服务
        云开发 CloudBase
        云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档