4 brucewong0516

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2k+

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

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

2019-06-27 15:35:30

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

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

2019-06-23 16:47:52

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

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

2019-05-09 19:30:34

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

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

2019-05-05 09:39:20

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

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

2019-03-19 18:01:45

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

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

2019-01-21 10:30:25

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

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

2019-01-04 21:26:17

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

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

2019-01-04 20:28:02

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

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

2019-01-04 19:37:53

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

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

2019-01-04 17:28:03

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

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

2018-12-05 17:48:49

【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

【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

【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

【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

【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

【python】双向冒泡排序

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

2018-11-29 16:42:55

【python】冒泡排序

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

2018-11-29 16:41:24

【python】选择排序算法

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

2018-11-29 16:39:15

【python】选择排序法改进

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

2018-11-29 16:36:47

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。