初稿:2018-10-19

转载请注明:科研菜鸟:http://blog.sciencenet.cn/home.php?mod=spacecp&ac=blog

Multifractal Detrended Fluctuation Analysis (MDFA)是计算非平稳序列多重分形谱的一种实用算法。本文解读MDFA的python模块(pymdfa.py),该代码由Copyright (c) 2014 Peter Jurica @ RIKEN Brain Science Institute, Japan提供。

pymdfa.py 主要由5个可由用户调用的函数:

__all__ = ["fastRMS","compRMS","compFq","simpleRMS","rwalk"]

和一个用户不可调用的函数:

def rw(X,w,step=1):

组成。本文将在python初学者的基础上讲解函数rwalk(X, axis=-1)。

通过理解rwalk(X, axis=-1)函数,可掌握解引用和数组维度的概念以及numpy模块中reshape、cumsum函数的用法。

函数rwalk(X, axis=-1)

功能: .计算X在axis维度方向元素的去平均累积和

,默认的是对横向元素(axis=-1)进行上述运算。

源代码:def rwalk(X, axis=-1):

"""Compute cumulative sum and subtract mean.

This function computes the sum along the last dimension.

Parameters

----------

X:    array

axis: array dimension along which to compute (default -1, the last dimension)

"""

shp = list(X.shape)   # change a tuple to a list

shp[axis] = 1

return numpy.cumsum(X - X.mean(axis).reshape(*shp), axis)    # *shp表示将shp list的两个值分开,分别赋值给reshape的两个参数,这种赋值方式成为解引用,相关概念参考文后NOTE。

# cumsum第二个参数表示沿第axis个维度进行累积和操作,具体应用参考文后NOTE

# reshape用法参考文后NOTE

# X.mean(axis):axis方向求平均#运行示例import numpy

x = numpy.array([[1,2],[3,4]])

print(rwalk(x))[[-0.5  0. ]

[-0.5  0. ]]

NOTE解引用

在list\tuple变量中均可用*实现解应用,在dictionary变量中用*实现对key的解引用,用**实现对value的解引用。下面是一些例子:def fun(a,b,c):

print(a)

print(b)

print(c)

x=[1,2,'WO']

y=(1,2,'WO')

z={'a':1,'b':2,'c':'WO'}

z0={'b':1,'c':2,'a':'WO'}

fun(*x)

print()

fun(*y)

print()

fun(*z)# *z调用z中的keyprint()

fun(**z) # **z调用z中的valueprint()

fun(*z0)# *z0 key按元素顺序解print()

fun(**z0) # **z0 value不按元素顺序解1

2

WO

1

2

WO

a

b

c

1

2

WO

b

c

a

WO

1

2数组维度

数数组的方括号嵌套数,就可以知道数组是几维的,例如[1,2,3]是1D数组,[[1,2],[3,4]]是2D数组,[[[1,2],[3,4]],[[5,6],[7,8]]]是3D数组。数组的维度约定按从高到低排列,例如:import numpy as np

x = np.array([1,2,3,4]) # 1D 数组,数组维度上元素数量记作 (4,)print(x.shape)

x = np.array([[1,2,3],[3,4,5]]) # 2D数组,数组各维度上元素数量记作 (2,3),约定列方向(竖向)是比行方向(横向)更高维度,列方向数量排在前面print(x.shape)

x = np.array([[[1,2,1],[3,4,1],[5,6,1],[7,8,1]],[[5,6,1],[7,8,1],[3,4,1],[1,2,1]]]) # 顺数第二层括号对有两个,这是最高维,因此最高维有2个元素,剩下维度与2D数组排序同print(x.shape)(4,)

(2, 3)

(2, 4, 3)CUMSUM

cumsum函数用于求累积和,主要用法如下示例:import numpy as np

x = np.array([[1,2],[3,4]])

print(np.cumsum(x)) # 如果不指定累积和维度,cumsum先将x按C_contiguous方式reshape成一维数组后再求累积和print(x.cumsum()) # 另外一种调用方法print(np.cumsum(x,0)) # 按最高维度方向进行元素累积和,本例中竖向元素求累积和print(np.cumsum(x,1)) # 横向元素累积和[ 1  3  6 10]

[ 1  3  6 10]

[[1 2]

[4 6]]

[[1 3]

[3 7]]RESHAPE

‘reshape’函数返回一个对原数组变形后的新数组,具体说,就是内存中按某一contiguous排列的数,按新数组维度从高到低排列,这种功能与numpy.lib.stride_tricks.as_strided函数在某种参数设定下相同。主要用法如下示例:import numpy as np

x = np.arange(10)

print(x.reshape(2,5))

print(np.reshape(x,(2,5))) #这是另一种reshape的方法,注意,这种方法的参数必须是一个tupleprint(x.shape) # reshape函数默认设置本身并不改变x的结构,只是返回了一个形变的viewy = np.reshape(x,(2,5))

x[0]=-1print(y) # 由于reshape返回的是view,x的值变,y的相应值也变化# 要改变x的shape结构,有两种方法:# 方法一:reshape后返回给自身x = np.arange(12)

x = x.reshape(2,6)

print(x)# 方法二:使用resize函数x.resize(3,4)

print(x)# reshape 与 as_strided 函数的等价性from numpy.lib.stride_tricks import as_strided as ast

x = np.arange(12)

print(ast(x,(2,6),(24,4)))

print(x.shape) # 这种方法也不改变x的结构本身,ast返回的也只是个viewprint(ast(x,(3,4),(16,4)))[[0 1 2 3 4]

[5 6 7 8 9]]

[[0 1 2 3 4]

[5 6 7 8 9]]

(10,)

[[-1  1  2  3  4]

[ 5  6  7  8  9]]

[[ 0  1  2  3  4  5]

[ 6  7  8  9 10 11]]

[[ 0  1  2  3]

[ 4  5  6  7]

[ 8  9 10 11]]

[[ 0  1  2  3  4  5]

[ 6  7  8  9 10 11]]

(12,)

[[ 0  1  2  3]

[ 4  5  6  7]

[ 8  9 10 11]]

python axis 1_科学网—Python初学之解读MDFA模块(2):解读 def rwalk(X, axis=-1) - 刘磊的博文...相关推荐

  1. python序列_科学网—Python:序列(字符串、列表、元组)和序列函数 - 刘洋洋的博文...

    Python中的序列,包括字符串(String).列表(List).元组(Tuple). 序列的索引 通过索引(index)访问及获得的序列的一个或多个元素,也叫切片. 正序: 0 到 N-1 倒序: ...

  2. python 网络_科学网-python 社会网络分析工具之networkx-郗强的博文

    1.networkx 2.igraph 3.SNAP 1.networkx NetworkX是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网 ...

  3. python dataset[trans_科学网—Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决 - 吴妍潼的博文...

    题记: 写该博客是因为自己经常遇到这个问题,而我发现网络上关于这方面浏览量高的一些代码竟然都有误,每次照搬都被虐得很惨.有一些同志在某些博客下方留言说代码有问题,而博主没有回应,也没有更改错误.为了自 ...

  4. python 面板数据分析_科学网—Python中的结构化数据分析利器-Pandas简介 - 郑俊娟的博文...

    此文转载于XXXXXX处... Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出来,目前由专注于Python数 ...

  5. python编程口诀_科学网—Python编程技巧汇总 - 高关胤的博文

    正在学习python编程,把一些小技巧记录下来备查 ======================计算技巧========================== 正常的条件语句如下if a>b:c= ...

  6. python可视化水平双向箭头_科学网—Python matplotlib quiver—画箭头、风场、量场图 - 张伟的博文...

    用像素点坐标画图 箭头关键的一个参数是长度,长度可以通过参数scale来设置,如果你多次使用quiver(),只要保证参数scale一致,那么箭头长度就会与风速 的值成正比,可按照下面我贴出的代码那样 ...

  7. python对数运算符号_科学网—Python中算数运算符之注意及np.logspace - 张伟的博文...

    (一)算数运算符 数字2 是一个整数的例子. 长整数 不过是大一些的整数. 3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4. (-5+4j ...

  8. python shell背景颜色改变_科学网—Python Shell Background Color - 李旭的博文

    ArcGIS在安装时就已经默认在本机安装了Python.可是,Python Shell的界面看起来太亮了,对眼睛不太好啊,如图1. 图1 在网上搜索一番,之前也有和我同样问题的帖子,不过,时间有点久了 ...

  9. python读取网站_科学网—python 获取网址 - 林清莹的博文

    Python获取网址的内容# coding=utf-8 import urllib url = "http://www.baidu.com" data = urllib.urlop ...

最新文章

  1. go http的按序号发送,按序号接收
  2. iPhone因安全漏洞上热搜,苹果:暂时无法修复,法国总统也中招
  3. Ubuntu10.04各文件夹的作用
  4. Datepicker
  5. linux 高级IO函数之fcntl mmap/munmap
  6. java 蓝桥杯算法训练 特殊的数字四十
  7. 燃气灶电气线路图及原理_电气安装造价如何入门,核心知识已为你打包
  8. Spring MVC 使用优化建议
  9. Java开发中的23种设计模式
  10. 0017-Spark的HistoryServer不能查看到所有历史作业分析
  11. SQL Server 不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的表进行了更改或启用了“阻止保存要求重新创建表的更改”选项
  12. java 1.5.0 gcj_Ubuntu下GCJ的使用
  13. mysqldump关于--set-gtid-purged=OFF的使用(好文章!!)
  14. 傲腾内存 可以用ghost系统_光影精灵傲腾版笔记本安装win10系统操作教程
  15. win7网上邻居_win7系统网上邻居在哪
  16. excel组合汇总_Excel汇总20150105
  17. 一分钟学会接网线(网络传输介质详解及布线连接)
  18. Fiddler抓部分app时网络连接失败
  19. 你会的还只有初级工程师的技术吗?灵魂拷问
  20. java项目遇到难题_Java项目遇到的常见问题

热门文章

  1. “官宣”:程序员被正式纳入新生代农民工!
  2. 面试现场:小伙伴美团一面的分享和分析「含解答」
  3. 为什么用了索引之后,查询就会变快?
  4. 阿里某程序员:我级别P7,工资待遇不比协和主治医师差
  5. 没水?没电?从非洲难民到美国华盛顿知名游戏开发者,有梦想的人,世界会为他让路!...
  6. 远程办公项目团队如何进行团队协作?
  7. 生态伙伴 | 番茄君入驻飞书,帮你一招搞定时间管理,告别拖延症!
  8. 经典控制~系统的极点
  9. JSP内置对象-pageContext
  10. SQL的基本数据类型