- 博客(27)
- 资源 (4)
- 收藏
- 关注
原创 爱上python系列------数据集(一):数据集获取api:cbsodata
cbsodata是荷兰统计局的数据开放的数据获取的api平时研究数据科学的时候,都是自己去下载数据集,而cbsodata可以使用api获取i数据使用之前需要安装:pip install cbsodata当然conda安装也是可以的:conda install cbsodata使用案例:import pandas as pdimport cbsodata as cbname='81251ned'df=pd.DataFrame(cb.get_data(name))p.
2020-10-31 17:21:45 654
原创 conda 一行命令安装R
想在jupyter里面使用R很简单,只需要一行命令就可以:conda install r-essentials安装成功后,就可以jupyter里面写R代码了
2020-10-31 12:56:17 2162
原创 在jupyter里面写sql
jupyter给人的感觉就是IPython的网页版IPython是自带很多魔法函数的,比如%run反正带%的都是魔法函数不过对于sql的使用,没有自带魔法函数,想使用,之前 就得安装:!pip install ipython-sql安装后需要导入外部库进来%load_ext sql接下来 就可以使用sql了不过,使用之前肯定需要连接sql数据库%sql mysql+pymysql://sql用户名:密码@IP/库名%sql+命令 ------这个命令理解成执行.
2020-10-29 17:47:35 3994 2
原创 爱上python系列------python性能(十三):忌用for循环
一直都在想标量和向量计算为啥速度不一样,直到看到这个文章接下来试验一下:用for循环:import numpy as npls=[i+8 for i in range(1<<25)]arrs=np.array(ls)#定义一个对每个元素都加8的函数def add_8(nums): for i in range(len(nums)): nums[i]+=8 return nums%timeit add_8(arrs)结果:9.1 s
2020-10-28 18:44:18 623
原创 爱上python系列------python性能(十二):pd.eval()加速实验证明无效
pd.eval()号称是使用了Numexpr,能够使用DataFrame之间的运算提速我亲自实验,说明现有的pandas版本的根本不支持,只适用于老版本的pandaspandas版本和Numexpr都是最新的pd.eval()支持的运算比较多,如四则运算、比较运算、位运算等这里首先来验证四则运算里面加法运算:(1)加法实验1:import numexprimport numpy as npimport pandas as pddf1=pd.DataFrame([int(n
2020-10-27 18:36:30 913
原创 爱上python系列------python性能(十一):numexpr比numpy更加高速
在python数据领域处理数据使用numpy越来越多了,因为numpy相对来说是很快的,不过当 数据量较大时numexpr会更快比如先做实验试试:先准备数据:import numexprimport numpy as npls1=np.array([int(np.random.rand()*100) for i in range(1<<25)])ls2=np.array([int(np.random.rand()*100) for i in range(1<<2
2020-10-27 17:21:04 811 1
原创 python根据一个list的index获取list
假如能够获得某list的某一堆的index,存在list里面list不支持这样查询:ls=[1,2,3,4,5,6,7,8,9,0]ls[2,3,6]##或者ls=[1,2,3,4,5,6,7,8,9,0]ls[[2,3,6]]都会报错:TypeError: list indices must be integers or slices, not tuple正确的方式其实也很简单:ls=[1,2,3,4,5,6,7,8,9,0]#listindex=[2,3,6]#i
2020-10-27 12:59:50 10677 2
原创 爱上python系列------python上下文管理器(二):对suppress进行装饰器重新实现
python上下文管理器可以做的事情简直不能太多这不,官方的文档实现了一个方法suppress,用于处理异常from contextlib import suppresswith suppress(FileNotFoundError): os.remove('somefile.tmp')with suppress(FileNotFoundError): os.remove('someotherfile.tmp')接着文档指出上面的代码等同于:try: os
2020-10-26 17:06:28 2355
原创 爱上python系列------python上下文管理器(一):利用ContextDecorator实现函数计时器
python上下文管理器是很牛的存在,这个实验是因为自己想练一下ContextDecorator进行自定义一个装饰器实验如下:from contextlib import ContextDecoratorimport timeimport math#自定义一个装饰器class timer(ContextDecorator): def __enter__(self): self.start=time.time() def __exit__(sel
2020-10-26 15:21:02 776 1
原创 爱上python系列------python性能(十):bisect加速有序列表的查询
如果数据量很大的时候,list哪怕使用index也会变得很慢,下面做个实验,使用二分查找模块bisectimport timeimport bisectindex=1<<25#1<<25表示2^25ls=[i for i in range(1<<28)]#1<<28表示2^28start=time.time()a1 = bisect.bisect(ls,index )print('bisect spend time:',time.ti
2020-10-26 10:38:17 443
原创 爱上python系列------python性能(九):namedtuple减少内存的使用
上一篇文章讲到了__slots__减少内存的使用namedtuple也是可以类似的事情,就是将class换成collections.namedtuple具体代码如下:from pympler.asizeof import asizesofimport collectionsDaGongRen = collections.namedtuple('DaGongRen', ['id_dg', 'age','salary'])#@profiledef test(): d= DaGong
2020-10-25 21:10:02 538
原创 爱上python系列------python性能(八):__slots__减少内存的使用
__slots__用于固定class里面打属性,一旦使用了__slots__,就只能使用设置好的属性了,而不能动态添加了没有使用__slots__的class,实例化对象的是时候是使用的dict,而使用过的会将dict转成一个元组,我们都知道元组是不能修改的。有利于检索对象,因此加上__slots__的类,无需分配和使用dict接下来,我们做一个实验,对比加上和没有加上的对象使用字节数量使用__slots__from pympler.asizeof import asizesofcla
2020-10-25 18:39:21 524
原创 manjaro安装gcc
manjaro这玩意,没有自身带gcc,不知道是不是自己按照版本的原因,反正需要自己手动安装两步即可完成,没必要手段去下载gcc文件自己编译一.查询gccpacman -Ss gcc得到如下结果:core/gcc 10.2.0-2 (base-devel) The GNU Compiler Collection - C and C++ frontendscore/gcc-ada 10.2.0-2 Ada front-end for GCC (GNAT)core/g
2020-10-25 17:12:53 5399
原创 爱上python系列------python性能(七):lru_cache为函数计算加速
缓存在计算的时候可以避免重复计算,现在的数据库很多也提供缓存技术,比如redispython的functools 模块就提供了一个工具,可以使用装饰器进行给函数进行缓存(LRU),重复的参数的就不进行重复计算了下面做一个实验1.不使用缓存import functoolsimport mathimport numpy as npimport timels=[int(np.random.rand()*100) for i in range(1000000)]#@functools.
2020-10-25 14:45:02 482
原创 爱上python系列------python性能(六):新建list对象性能优化
Cpython里的list实际上就是长度可变的数组实现的新建list经常会使用这样的一种写法:[i for i in range(N)]这样的写法不仅仅很酷很简洁,这样的写法实际上还能提速呢下面做了一个实验:import timeimport numpy as npst=time.time()evens = []for i in range(1<<26): if i % 2 == 0: evens.append(i)print(time.
2020-10-23 17:42:05 467 1
原创 爱上python系列------python性能(五):字符串拼接性能优化
python里面字符串是不可变的,在拼接的时候 速度会比较慢,因为拼接任意不可变序列都会生成一个新的序列对象也就是说在拼接的过程中会产生很多中间对象,新建对象肯定需要时间,而且这明显浪费内存优化的方式是使用.join()代替实验代码如下:import timeimport numpy as npls=['AA_'+str(i) for i in range(10000000)]s=""st=time.time()for i in ls: s+=iprint(time
2020-10-23 16:40:41 1703 1
原创 爱上python系列------python性能(四):list-set-dict性能对比
无意间看到文章说set的速度比list快,很是不解,于是自己做了一个实验实验1:几乎不带重复的数据时三者查询性能的对比import timeimport numpy as np##准备数据mylist=[int(np.random.rand()*10000000) for i in range(10000000)]myset=set(mylist)mydic={i:i for i in mylist}##listst=time.time()for i in mylist:
2020-10-22 22:23:59 1109 1
原创 爱上python系列------python性能(三):KCacheGrind性能分析可视化
KCacheGrind是 一个性能可视化的工具,需要读取固定格式的文件就可以获取可视化的图形,不是属于python独有的前面我们使用cProfile进行了性能分析,接下来我们使用cProfile分析后 ,然后保留成文件,该文件并不能直接被KCacheGrind读取,需要使用工具pyprof2calltree进行转换,得到的文件是KCacheGrind可以使用的,然后就能得到可视化结果。因此,接下来需要准备两个工具:(1)KCacheGrind这个直接可以下载:https://sourcefor
2020-10-20 17:44:49 2540 2
原创 爱上python系列------python性能(二):line_profiler性能分析
Python的性能分析分析十分重要,因为可以给我们优化性能提供可靠的数值参考Python的性能分析有两个主流工具cProfile和line_profiler,前者是python内置的工具,不过不是分析报告特别详细下面试一下cProfile:import profileclass cached: def __init__(self, fn): self.fn = fn self.cache = {} def __call__(self, *ar
2020-10-20 16:23:03 906 1
原创 爱上python系列------python性能(一):pypy实践
python作为一门解释型语言,执行效率一直被诟病,速度比c慢几十到上百倍这里主要谈到pypy就是一个解释器,我们安装好的python的默认的解释器是Cpython比如我们平时使用python命令:root@root:/opt# pythonPython 2.7.16 (default, Oct 7 2019, 17:36:04) [GCC 8.3.0] on linux2Type "help", "copyright", "credits" or "license" for mo
2020-10-20 13:35:08 4044 3
原创 解决gpu没有运行进程,但是显存一直占用的方式
通常情况下,停止进程显存会释放但是如果在不正常情况关闭进程,可能不会释放,这个时候就会出现这样的情况:Mon Oct 19 16:00:00 2020 +-----------------------------------------------------------------------------+| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 ||-------
2020-10-19 16:09:07 33740 9
原创 PreconditionNotMetError: The third-party dynamic library (libcublas.so) that Paddle depends on is no
运行paddle报错:C++ Call Stacks (More useful to developers):--------------------------------------------0 std::string paddle::platform::GetTraceBackString<std::string>(std::string&&, char const*, int)1 paddle::platform::EnforceNotMet::En
2020-10-19 15:59:20 14339 8
原创 pytorch模型量化
模型量化是为了减少模型的大小,以便在边缘设备上进行计算首先建网络:import torchimport torch.nn as nnfrom torchsummary import summarydevice = torch.device("cpu")class SimpleNet(nn.Module): def __init__(self, num_classes=10): super(SimpleNet, self).__init__() sel
2020-10-14 17:27:10 4004 5
原创 paddlelite使用pytorch训练好的模型
之前写过一篇paddlelite使用TF训练好的模型paddlelite没法直接转换pytorch的模型,需要先转换成onnx模型,paddlelite是可以转换onnx模型的。这里 直接使用pytorch转换onnx的例子https://pytorch.org/tutorials/advanced/super_resolution_with_onnxruntime.html运行成功后会得到一个名为super_resolution.onnx的 文件然后使用paddlelite进行转换,和TF
2020-10-14 16:33:24 1620 1
原创 使用deap进行遗传算法并发优化实践
直接上代码# -*- coding: utf-8 -*-import arrayimport randomimport jsonimport numpyimport numpy as npimport pandas as pdimport osfrom deap import algorithms,base,creator,toolsimport multiprocessingPOP_SIZE = 200#生成模拟数据df=[int((800 -500) * np.rand
2020-10-14 11:34:32 2260 7
原创 在pytorch中使用ray.tune进行超参数搜索
文章没啥含金量 ,是直接copy指导上的https://pytorch.org/tutorials/beginner/hyperparameter_tuning_tutorial.html代码如下:from functools import partialimport numpy as npimport osimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as opti
2020-10-13 18:16:54 3475 4
原创 pytorch自带的模型剪枝工具prune的使用
torch.nn.utils.prune可以对模型进行剪枝,官方指导如下:https://pytorch.org/tutorials/intermediate/pruning_tutorial.html直接上代码首先建立模型网络:import torchimport torch.nn as nnfrom torchsummary import summarydevice = torch.device("cuda" if torch.cuda.is_available() else "
2020-10-13 16:21:12 13926 19
Roy Thomas Fielding博士论文REST(中文版)
2018-11-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人