python有许多实用函数,合理实用可以大幅精简代码。本篇博文旨在记录一些常用的操作技巧,以便重复使用时快速查阅,会持续进行更新。
读取txt文件
通过numpy的genfromtxt来读取txt文件
delimiter
分隔符
usecols
指定读取的列
随机生成正态分布数
生成[0,1)大小为(2,2)的符合正态分布的矩阵
随机生成不重复的数
产生k个[0,60)的不同随机数
返回列表中最多次出现过的数
返回数组中非零元素的位置
这个函数更多的实用案例可参考:
绘制散点图
导入库:
关于浅拷贝和深拷贝的冷知识
没有嵌套,copy()即可;
有嵌套,必须copy.deepcopy(变量)
求欧式距离
经常用到,有两种方式实现,一种手写,另一种调用numpy的某接口。
我倾向手写的方式,对结果更容易掌控。
洗牌操作shuffle
用于打乱某序列的固定顺序
求累积和
在轮盘赌算法中常用,累求和序列
比如 ,这里的p是1,2,3,q就是1,3,6
生成随机数/整数
生成随机数:
生成随机整数:
括号里可添加范围,默认(0,1]
求列表ind_a中元素等于1的下标
反解包*zip
已知location = [(x1,y1),(x2,y2)]
通过下面的方式将x,y单独分离
将一个序列作为索引,另一个序列输出索引值
很实用,很巧妙
array的部分翻转
翻转[::-1]
结果:a[0]的20,10,22变为22,10,20
List中每个数都除以某数
直接除会报错,巧妙办法:
每个数都除以10
多个列表同时排序
遇到这么一个问题:两个list元素一一对应,一个list进行排序,另一个list上的元素也跟着排序,保持一一对应关系。
下面是我遇到的实际问题场景:
一个list存储文章标题,另一个list存储文章发表时间,根据时间来进行两者同时排序:
主要思路:用zip将两者进行打包,排序完之后再用zip*解包。
跳过异常继续运行
这个需求是我在进行爬虫练习时遇到的,有的网站为了防爬虫,会连续性的网站数据中加入某些异常值,导致正常爬虫遇到时会进行报错,从而前功尽弃。
为了防止这种事情发生,就需要通过异常检测的方式来跳过去:
字符串截取(以截取Link为例)
字符串截取比较常规,遇到这么一个场景:需要从字符串中提取出所有的网页链接,即Link。
可直接调用下面封装好的函数。
获取今天年月日
转换array中类型
将numpy中的array序列中的类型进行转换可使用astype
例如:转换成浮点型
Matplotlib设置中文
让图例显示中文,全局添加:
Matplotlib两个子图并列显示
使用subplot
控制子图位置,用figsize
调整子图大小
Matplotlib子图并列显示/保存组合图
和上面的写法略有区别
统计程序花费时间
绘制简单折线图并保存
将数据结果写入txt文件
获取矩阵每行下标
批量修改txt文件
新建一个txt文件,读取原文件每行数据,批量进行添加信息
通道交换
(3, 320, 640) -> (320, 640, 3)
注意0,1,2表示原序列的索引