自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 资源 (1)
  • 论坛 (1)
  • 收藏
  • 关注

原创 【Python】JupyterNotebook魔法 - 计时性能测试(%%time %time %timeit)

对于计时有两个十分有用的魔法命令:%%time 和 %timeit。1.%%time 将会给出cell的代码运行一次所花费的时间。%time [x for x in range(1000)]Wall time: 0 nsOut[22]:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]2.%time 将会给出当前行的代码运行一次所花费的时间。%%timeitli = ...

2019-06-27 15:35:30 6671 1

原创 【python】详解使用configparser进行文件配置

        将代码中的配置项抽取到配置文件中,修改配置时不需要涉及到代码修改,这样就提高了代码的重用性,不再每次都去修改代码内部,极大的方便后期软件的维护。        configparser解析的配置文件的格式为ini的配置文件格式 (xxx.ini),就是文件中由多个section构成,每个section...

2019-06-23 16:47:52 1489

原创 【Python】详解pandas的isin索引和~反向索引

       有的时候会经常遇到条件过滤的场景,这个时候可能经常使用isin或者是~来进行一步操作,而不是写条件语句的方式,这样来提高效率和简洁度。1、直接根据条件进行索引,isin()接受一个列表,判断该列中元素是否在列表中import numpy as npimport pandas as pddf=pd.DataF...

2019-05-09 19:30:34 6297

原创 【python】详解copy浅复制和deepcopy深复制、字典类型的copy以及" = "

       关于copy()和deepcopy(),以及变量的赋值,不经意使用会出现错误,而且这种错误很隐蔽,逻辑上不容易看出来bug。因此我们最好使用copy和deepcopy来精细声明处理。那么这两个拷贝的区别在哪里,先看下面两条结论,接下来大家可以带着这两条结论进行下面的分析:寻常意义的复制就是深复制,即将被复制对...

2019-05-05 09:39:20 2640 1

原创 【Python】详解@property装饰器的使用

在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.score = 9999这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数:class Student(object)...

2019-03-19 18:01:45 1471

原创 【python】详解multiprocessing多进程-总结(五)

由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。Python提供了非常好用的多进程包multiprocessing,只需要定义一个函数,Python会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。multiprocessing支持子进程、通信和共享数据、执行不同形式的同步,提供了Pr...

2019-01-21 10:30:25 4512

原创 【python】详解multiprocessing多进程-Lock、Rlock进程同步(四)

       对于多进程multiprocessing和多线程threading这两个库的同步,基本上是相似的使用方式。之前写过threading的Lock、Rlock一文,详细讲解了锁的同步使用,详见:【python】详解threading模块:

2019-01-04 21:26:17 5918 1

原创 【python】详解multiprocessing多进程-Queue、Pipe进程间通信(三)

       之前专门写过queue这个库的使用,详见文章:详解queue队列(一),此处的队列与原文基本上相近。当使用多个进程时,通常使用消息传递来进行进程之间的通信,并避免必须使用任何同步原语(如锁)。对于传递消息,可以使用Pipe()(用于两个进程之间的连接)或队列Queue(允许多个生产者和消费者)。&am

2019-01-04 20:28:02 11902

原创 【python】详解multiprocessing多进程-Pool进程池模块(二)

       Multiprocessing.Pool可以提供指定数量的进程供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程

2019-01-04 19:37:53 28304 8

原创 【python】详解multiprocessing多进程-process模块(一)

       multiprocessing类似于threading模块支持生成进程的包,是Python的标准模块,它既可以用来编写多进程,也可以用来编写多线程。如果是多线程的话,用multiprocessing.dummy即可,用法与multiprocessing基本相同。由于python使用全局解释器锁(GIL),他会将进程中的线程序列化

2019-01-04 17:28:03 16209 1

原创 【python】numpy实现rolling滚动的方法

相比较pandas,numpy并没有很直接的rolling方法,但是numpy 有一个技巧可以让NumPy在C代码内部执行这种循环。这是通过添加一个与窗口大小相同的额外尺寸和适当的步幅来实现的。import numpy as npdata = np.arange(20)def rolling_window(a, window): shape = a.shape[:-1] + (a...

2018-12-05 17:48:49 11171 2

原创 【python】详解pandas.DataFrame.resample根据时间分别聚合多列数据(二)

how真的很好用啊!!!import pandas as pddata = pd.DataFrame({'open':[1,2,3,4,5],'close':[2,3,4,5,6]},index = pd.date_range('12/12/2017',periods=5,freq='T'))dataOut[5]: open close2...

2018-12-05 17:39:55 3549

原创 【pytho】3以上版本使用pickle.load读取文件报UnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in position 6

python 3以上版本使用pickle.load读取文件报UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xdb in position 2: ordinal not in range(128)只需要在打开的时候指定编码: encoding='iso-8859-1’import picklewith open("factor_sol...

2018-12-04 18:05:25 2257 4

原创 【python】详解numpy.vectorize的使用,将函数向量化

首先看一下文档:numpy.vectorize(pyfunc, otypes=None, doc=None, excluded=None, cache=False, signature=None)Parameters: pyfunc :python函数或方法otypes : 输出数据类型。必须将其指定为一个typecode字符串或一个数据类型说明符列表。每个输出应该有一个数据类型说明符。...

2018-12-03 18:26:09 21511 1

原创 【python】详解pandas.DataFrame.resample根据时间聚合采样(一)

首先我们直接看官方的文档:DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start', kind=None, loffset=None, limit=None, base=0, on=None, level=None...

2018-12-03 17:33:35 19117

原创 【python】插入排序和希尔排序

插入排序法类似打牌时候摸扑克牌整理顺序的过程,逻辑如下:在第i轮通过列表的时候(i从1到n-1),第i项应该插入到列表的前i个项中的正确位置;在第i轮之后,前i个项应该是排好序的;def insertion_sort(x): i = 1 while i < len(x): # i轮之前的最大的索引位置 j = i - 1 # 定...

2018-11-29 16:45:26 152

原创 【python】双向冒泡排序

冒泡排序法:冒泡排序存在所谓的“乌龟问题”,假设我们需要将序列按照升序排序。序列中的较小的数字又大量存在于序列的尾部,这样会让小数字在向前移动得很缓慢,因此针对这一问题,产生了双向冒泡排序法,也称鸡尾酒排序法。双向冒泡排序法:由两个方向同时进行冒泡:首先由左向右为大元素移动方向,从右向左为小元素移动方向,然后每个元素都依次执行。在第i次移动后,前i个和后i个元素都放到了正确的位...

2018-11-29 16:42:55 757

原创 【python】冒泡排序

冒泡排序:从列表的开头处开始,逐个比较一对数据项,如果顺序不对就交换两项位置,直到移动到列表的末尾。这个过程的效果就是将最大的项以冒泡的方式排到算法的末尾。然后算法从列表开头到倒数第二项重复这一过程,依次类推。与简单选择排序的比较:冒泡排序也是一个嵌套的循环,如果列表是已经排好序的,冒泡排序不会执行任何的交换;在最坏的情况下,为平方阶复杂度。from swax_functio...

2018-11-29 16:41:24 244

原创 【python】选择排序算法

排序算法的逻辑非常简单:首先搜索整个列表,找到最小项的位置,如果该位置不是列表的第1项,就交换这两个位置的元素。然后从列表的第2个元素开始,重复上述过程,直到算法达到整个过程的最后一个位置.循环复杂度:函数包括一个嵌套的循环,对于大小为n的列表,外围的循环执行n-1次;内部循环的次数从n-1递减到1;因此,选择排序在各种情况下的复杂度为平方阶。from swax_functio...

2018-11-29 16:39:15 160

原创 【python】选择排序法改进

选择排序法改进思路:如果每轮只找最小值,效率较低,可以考虑每次同时寻找最小值和最大值;并且在某一轮如果最小值与最大值相同,说明剩下的数字都相同,可以直接结束。实现逻辑:与选择排序不同的是,需要考虑到如果第i轮里,恰好第i个数就是最大值时先交换minindex和i之后,最大值的下标变成了minindex这时候应该交换minindex和n-i-1,而不是maxindex和n-i-1。...

2018-11-29 16:36:47 300

原创 【python】详解threading模块:local类的使用(六)

一般我们对多线程中的全局变量都会加锁处理,这种变量是共享变量,每个线程都可以读写变量,为了保持同步我们会做枷锁处理。但是有些变量初始化以后,我们只想让他们在每个线程中一直存在,相当于一个线程内的共享变量,线程之间又是隔离的。 python threading模块中就提供了这么一个类,叫做local。local是一个小写字母开头的类,用于管理 thread-local(线程局部的)数据。对于同一个...

2018-11-28 18:21:58 1002

原创 【python】详解threading模块:timer类的使用(五)

Timer(定时器)是Thread的派生类,用于在指定时间后调用一个方法。Timer从Thread派生,没有增加实例方法。函数:Timer(interval, function, args=[ ], kwargs={ })interval: 指定的时间function: 要执行的方法args/kwargs: 方法的参数1、timer在t时间后启动import threading...

2018-11-28 18:07:59 10736

原创 【python】详解threading模块:Event类的使用(四)

在上一篇文章中【python】详解threading模块:Condition类的使用(三),详细解释了condition类的使用,可以进行线程之间的通,通过threading.Condition的notify方法实现。threading模块提供Event类实现线程之间的通信。很多时候,线程之间会有互相通信的需要。常见的情形是次要线程为主要线程执行特定的任务,在执行过程中需要不断报告执行的进度情况...

2018-11-28 17:48:28 5572

原创 【python】详解threading模块:Condition类的使用(三)

在上文详解threading模块:lock、Rlock的使用(二)详细介绍了互斥锁,但是互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持。Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方法。Condition的处理流程如下:首先acquire一个条件变量,...

2018-11-28 17:23:43 6246 4

原创 【python】详解pandas.DataFrame.plot( ) 中参数secondary_y实现双坐标轴使用

首先看官网的DataFrame.plot( )函数secondary_y : boolean or sequence, default False # 可以是布尔值或者是数列 Whether to plot on the secondary y-axis If a list/tuple, which columns to plot on secondary y-axis ...

2018-11-19 12:59:48 10863

原创 【python】详解事件驱动event实现

所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出)。脚本型:脚本型的程序包括最早的批处理文件以及使用Python做交易策略回测等等,这类程序的特点是在用户启动后会按照编程时设计好的步骤一步步运行,所有步骤运行完后自动退出。连续运行型:连续运行型的程序包含了操作系统和绝大部分我们日常使用的软件等等,这类程序启动后会处于一个无限循环中连续运行,直到用户主动退出...

2018-11-13 17:36:15 11427 3

原创 【python】详解queue队列(一)

一、队列的定义队列类似于一条管道,元素先进先出,进put(arg),取get( )。需要注意的是:队列都是在内存中操作,进程退出,队列清空,另外,队列也是一个阻塞的形态。二、队列分类队列有很多种,但都依赖模块queue队列方式特点queue.Queue先进先出队列queue.LifoQueue后进先出队列queue.PriorityQueue优先级队列...

2018-11-13 13:12:40 12013

原创 【python】详解collections模块中OrderedDict的使用

很多人认为python中的字典是无序的,因为它是按照hash来存储的,但是python中有个模块collections(英文,收集、集合),里面自带了一个子类OrderedDict,实现了对字典对象中元素的排序。import collectionsprint("Regular dictionary")d={}d['a']='A'd['b']='B'd['c']='C'd['1'] =...

2018-11-12 15:36:35 12633 6

原创 【python】详解isinstance方法

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。isinstance() 与 type() 区别:type() 不会认为子类是一种父类类型,不考虑继承关系。isinstance() 会认为子类是一种父类类型,考虑继承关系。如果要判断两个类型是否相同推荐使用 isinstance()。isinstance() 方法的语法:isinst...

2018-10-04 16:53:48 1777

原创 【python】详解pandas库的pd.merge_ordered与pd.merge_asof

merge_ordered:函数允许组合时间序列和其他有序数据。 特别是它有一个可选的fill_method关键字来填充/插入缺失的数据。import pandas as pdleft = pd.DataFrame({'k': ['K0', 'K1', 'K1', 'K2'], 'lv': [1, 2, 3, 4], ...

2018-10-04 00:21:38 5796

原创 【python】详解pandas库的pd.merge函数

pandas.DataFrame.mergepd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indi...

2018-10-03 22:28:18 129308 2

原创 【python】详解urllib库的操作,requests,error,parse模块

urllib 是python内置的http请求库,内置的主要是以下几个模块:urllib.requests :请求模块urllib.error :异常处理模块urllib.parse :url解析模块urllib.robotparer :robot.txt解析模块1、urllib实现get或者post请求urllib.requests.urlopen(url,data = None...

2018-10-03 00:14:56 1812

原创 【python】详解pymongo库的使用

1、连接mongodb,创建client传入 ip 值或者 localhost ,端口是27017import pymongofrom pymongo import MongoClientclient = MongoClient()#连接到本地client = MongoClient('mongodb://localhost:27017/')#或者client = MongoCli...

2018-09-30 21:03:46 4974

原创 【python】详解logging日志模块

最近看了崔庆才的网站,个人认为博主的写的非常的好,本文基于博主的文章Python中logging模块的基本用法进行学习和改造。1、日志记录的重要性在开发过程中,如果程序运行出现了问题,我们是可以使用我们自己的 Debug 工具来检测到到底是哪一步出现了问题,如果出现了问题的话,是很容易排查的。但程序开发完成之后,我们会将它部署到生产环境中去,这时候代码相当于是在一个黑盒环境下运行的,我们只能看...

2018-09-23 12:13:58 651

原创 【python】hasattr( )的用法

hasattr() 函数用于判断对象是否包含对应的属性。hasattr(object, name)object -- 对象。name -- 字符串,属性名。return如果对象有该属性返回 True,否则返回 False。实例class variable: x = 1 y = 'a' z = Truedd = variable() print(hasa...

2018-09-22 17:02:13 7541

原创 【python】详解字典sorted函数(高级篇)

在之前的一篇文章中:根据dict字典的键key或者值value排序,我们用到了sorted 如何进行按照键或者值进行排序,解决了字典的排序问题。本文将进一步详细介绍sorted的强大。sorted 用于对集合进行排序(这里集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大。1、对列表排序,返回的对象不会改变原列表list = [1,5,7,...

2018-09-14 14:08:20 7230 4

原创 【python】numpy.datetime64( ) 时间和 datetime.datetime 互转

首先定义几个时间变量datetime、Timestamp、numpy.datetime64:import datetimeimport numpy as npimport pandas as pddt = datetime.datetime(2018, 9, 1)# A strange way to extract a Timestamp object, there's surely ...

2018-09-14 13:16:59 31550 2

原创 【python】详解异步async库的使用

在学习asyncio之前,先理清楚同步/异步的概念:同步是指完成事务的逻辑,先执行第一个事务,如果阻塞了,会一直等待,直到这个事务完成,再执行第二个事务,顺序执行异步是和同步相对的,异步是指在处理调用这个事务的之后,不会等待这个事务的处理结果,直接处理第二个事务去了,通过状态、通知、回调来通知调用者处理结果asyncio函数:异步IO采用消息循环的模式,重复“读取消息—处理消...

2018-09-14 09:52:28 9735

原创 【python】详解global全局变量函数

在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错。count = 1def cc(): count = count+1cc()Traceback (most recent call last): File "<ipython-input-17-f6b58c567c1a>", line 1, in <module&gt...

2018-09-13 17:27:20 4605

原创 【python】Spyder环境中导入自定义模块

当前会经常写入自己整理的class类和def函数,这时在Spyder环境中就需要用import调用;如果没有添加路径,会产生报错。那么解决该问题,实质就是如何让自编模块所在的目录加入到python的搜索路径里。因为导入操作都是执行同样的命令: import xxx,例如:import AATraceback (most recent call last): File "<ip...

2018-09-12 23:56:34 8741 1

非常简易的keras函数式(Functional)模型学习以LSTM为例构建多输入和多输出模型的完整实例

非常简易的keras函数式(Functional)模型学习以LSTM为例构建多输入和多输出模型的完整实例,可以让新手完美掌握整个模型构建的流程

2018-01-12

brucewong0516的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除