【Python】收集python代码的优雅写法

本文从下到上更新,最新发现的在最前面。

 

 

  • 通过glob模块方便地读取文件夹中文件列表

假设文件存放在root根目录下,文件名均为".txt"的后缀。可以一行语句读取所有文件路径:

import glob
files = glob.glob( root_dir + '*.txt' )

读取的文件是无序的,可通过sorted对文件路径排序:

files = sorted( files, key = lambda x: x[x.rindex("\\")+1:] )
  • 通过csv模块快速写入文件

一般手动写入文件,需要open打开文件,把数据转化为string类型写入文件、close文件。虽然操作简单,写出来代码不优雅。

csv模块省略文件关闭操作。把list写入文件时,也不用考虑元素类型。elegant!

import csv
writer = csv.writer( open( output_file, 'w', newline=''))
writer.writerow( [ 'id', 'label' ] )

writerow()函数写入文件时会默认在行尾加个空行,加入newline=''是为了消除这个空行。

  • 通过Numpy.genfromtxt读取并格式化数据

为了得到我们需要的有用数据,我们有两个硬的要求: (1) 跳过表头信息;(2) 区分横纵坐标

import numpy as np
data = np.genfromtxt('waveform.txt',delimiter=',',skip_header=18)

delimiter: 横纵坐标以 ',' 分割。

skip_header: 有用数据是从19行开始的,因此给 skip_header 传入 18。

最终得到的data是numpy多维数组。

  • 通过np.true_divide实现数组元素逐个相除

数组的除法运算

1

import numpy as np


# divide函数在整数和浮点数除法中均只保留整数部分(python3中的np.divide == np.true_divide)

1

2

3

4

= np.array([2,6,5])

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

print (np.divide(a,b),np.divide(b,a))

# (array([2, 3, 1]), array([0, 0, 0]))


# true_divide函数与数学中的除法定义更为接近,即返回除法的浮点数结果而不作截断

1

2

print (np.true_divide(a,b),np.true_divide(b,a))

# (array([ 2. , 3. , 1.66666667]), array([ 0.5 , 0.33333333, 0.6 ]))

  

# floor_divide函数总是返回整数结果,相当于先调用divide函数再调用floor函数(floor函数将对浮点数进行向下取整并返回整数)

1

2

3

4

5

print (np.floor_divide(a,b),np.floor_divide(b,a))

# [2 3 1] [0 0 0]

= 3.14 * b

print (np.floor_divide(c,b),np.floor_divide(b,c))

# [ 3. 3. 3.] [ 0. 0. 0.]

  

# /运算符相当于调用divide函数

1

2

print (a/b,b/a)

# (array([2, 3, 1]), array([0, 0, 0]))

  

# 运算符//对应于floor_divide函数

1

2

3

4

print (a//b,b//a)

# [2 3 1] [0 0 0]

print (c//b,b//c)

# [ 3. 3. 3.] [ 0. 0. 0.]

  • numpy数组快速索引行和列

https://www.cnblogs.com/liuxuanhe/p/9209090.html

a[...,2]:...表示遍历每行,2表示索引为2的所在列。

a[...,:2]:...表示遍历每行,:2表示索引为<2的0,1所在的列。

a[...,::2]:...表示遍历每行,2表示步长,选取多索引为0,2,4所在的列。

a[::-1]:表示取反,将所要输出的列表的固定维度取逆序。

 使用jupyter时,经常会想知道这个cell执行了多少时间。每次单独写计时又特别麻烦。gluon介绍了一种方便快捷的方案,通过jupyter_contrib_nbextensions中的计时插件来实现。

1

2

3

pip install jupyter_contrib_nbextensions

jupyter contrib nbextension install --user

jupyter nbextension enable execute_time/ExecuteTime

  •  Jupyter新手小窍门

Alt + Enter                会新插入一行

Shift + Enter             跳到下一行

%run *.py,运行外部文件

%time statement,查看运行时间

 %who,查看当前会话中的所有变量与函数

%lsmagic,更多魔法命令

如果用:%time %run XXX.py,则会查看这个文件的运行时间。更智能的方式推荐上一条。

发布了392 篇原创文章 · 获赞 492 · 访问量 241万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览