Python笔记
AItrust
AI_Computer Vision
展开
-
Mac 终端进入 conda 虚拟环境后 pip 依然安装到全局下的问题解决
一、问题起因:之前折腾安装各种软件可能是不小心改了些什么莫名奇妙的设置然后就出现了问题:mac 系统 Catalina版本10.15.5在 anaconda 中创建了新的虚拟环境(比如 test)然后在 mac 终端中 输入source activate test 进入虚拟环境使用 pip install 安装的东西都被安装到了全局下,而不是虚拟环境中使用 which pip 查看,显示为全局下的 pip使用 which python 查看,显示为全局下的 python二、尝试了无原创 2020-07-05 10:57:39 · 2117 阅读 · 0 评论 -
Python 修饰符 @ 的用法汇总
为已经存在的函数A,添加新的功能B文章目录一、Python 修饰符 @1.1 例子:为函数 Fun_A 添加 Fun_B 的新功能1.2 复杂一点的例子:嵌套1.3 更复杂的例子:带有参数1.4 再复杂一点的例子:返回一个函数二、functools 模块中修改函数属性的方法 @wraps2.1 保留新功能的函数名2.2 新增功能带有多个参数2.3 修饰符带有参数一、Python 修饰符 @1.1 例子:为函数 Fun_A 添加 Fun_B 的新功能def Func_A(f): f() # 在原创 2020-07-02 18:54:51 · 1253 阅读 · 0 评论 -
numpy.savetxt() 报错 Mismatch between array dtype (‘object‘) and format specifier (‘%.18e‘)的解决方法
将数组存储为文件:import numpy as npa = np.array([[1,2,3],[1,2]])np.savetxt('xxx.txt',a)报错:TypeError: Mismatch between array dtype ('object') and format specifier ('%.18e')解决方法:可以把 数组中每个元素个数变成一样(长度相同)或者改用 pickle 代替 numpy.savetxt()import numpy as npi原创 2020-07-01 17:02:14 · 9152 阅读 · 2 评论 -
Python Pandas 图形绘制(三):散点图(单维度和交叉维度)
Pandas 图形绘制(三)准备数据:1. 散点图(单维度)df.plot.scatter2. 散点图(交叉维度)x,y,c准备数据:import matplotlib.pyplot as pltimport pandas as pddata = {'name' : pd.Series(['Alice', 'Bob', 'Cathy', 'Dany', 'Ella']), 'English' : pd.Series([3, 2.6, 2, 1.7, 3]), 'Ma原创 2020-05-28 22:10:43 · 9270 阅读 · 2 评论 -
Python Pandas 图形绘制(二):直方图
直方图(Histogram)又称质量分布图。经常用来表示数据的分布情况。一般用横轴表示数据类型(区间),纵轴表示分布情况(频数)。Pandas 图形绘制(二):直方图1. 对单列数据绘制直方图 df.hist2. 对所有数据绘制多子图直方图 df.hist3. 累计直方图 cumulative=True4. 交叉直方图/重叠显示直方图 df.plot.hist5. 堆叠直方图/叠加显示直方图 stacked=True6. 水平直方图 orientation='horizontal'1. 对单列数据绘原创 2020-05-27 21:22:09 · 28519 阅读 · 0 评论 -
Python Pandas 图形绘制(一):折线图,柱状图
Pandas 图形绘制(一):折线图,柱状图一、折线图 Line Chart1.1 默认绘制折线图 df.plot1.2 绘制多条折线二、柱状图 Bar Chart2.1 垂直柱状图 df.plot.bar2.2 叠加柱状图 stacked=True2.3 水平叠加柱状图 df.plot.barh一、折线图 Line Chart1.1 默认绘制折线图 df.plotimport matplotlib.pyplot as pltimport pandas as pdimport numpy as n原创 2020-05-26 22:14:06 · 17184 阅读 · 0 评论 -
Python Pandas 数据合并/融合 merge 数据过滤 isin
Pandas 数据合并/融合,数据过滤数据准备:一、数据合并 pd.merge1.1 把右边的数据融合到左边1.2 把左边的数据融合到右边1.3 取交集1.4 取并集二、数据过滤 isin2.1 对原数据集进行筛选,留下与新数据集交集的行数据2.2 对原数据集进行筛选,去除与新数据集交集的行数据(留下不在新数据集中的行)数据准备:import pandas as pd# 假设有 5 个人,分别参加了 4 门课程,获得了对应的分数# 同时这个 5 个人分别负责的项目个数 在 'Project_num'原创 2020-05-25 19:42:41 · 2183 阅读 · 0 评论 -
Python Pandas 处理空数据/缺失数据 dropna fillna,增加/更新列 assign,分层 qcut,向量函数
Pandas 处理空数据/缺失数据,增加/更新列,分层,向量函数数据准备一、处理缺失数据1.1 去除有缺失数据的行 dropna1.2 替换缺失数据 fillna二、增加/更新列2.1 指定生成列的方式2.2 复制现有的列生成新的列2.3 利用现有的列数据,按照函数生成新的列2.3.1 方式一2.3.2 方式二2.3.3 方式三2.4 对现有列数据进行更新三、分层 pd.qcut3.1 方式一3.2 方式二3.3 方式三四、向量函数 max,min,clip,abs4.1 纵向/列取最大值 df.max4.原创 2020-05-24 21:26:12 · 869 阅读 · 0 评论 -
Python Pandas 数据分组 pd.groupby 的相关操作(二)shift, rolling, rank, cumsum, agg
Pandas 数据分组 pd.groupby 的相关操作(二)数据准备一、数据平移 df.shift1.1 上下平移1.2 左右平移1.3 分组数据平移二、数据滚动 df.rolling2.1 滚动求和2.2 滚动求均值三、排名 df.rank3.1 总排名3.1 分组后,针对某一列排名3.2 排名序号限定于 0~1 之间 ptc3.3 排名方法 method='first' / 'min' / 'max' / 'dense'四、累计4.1 累加 df.cumsum4.2 累计迭代最大值/最小值 df.cu原创 2020-05-23 13:42:59 · 6694 阅读 · 1 评论 -
Python Pandas 数据分组 pd.groupby 的相关操作(一)
Pandas 数据分组 pd.groupby 的相关操作(一) 数据准备一、分组并统计各组数量 df.groupby().size()1.1 按列内元素进行分组 df.groupby(by='label')1.2 按 index 做分组 df.groupby(level=0)二、分组显示(类似迭代器)2.1 针列不同元素进行分组显示2.2 对 index 的不同项目进行分组显示2.3 针对多列进行叠加分组显示数据准备import pandas as pd# 假设有 5 个人,分别参加了 4 门课程,获原创 2020-05-22 22:54:15 · 8296 阅读 · 0 评论 -
Python Pandas 常用统计数据方法汇总(求和,计数,均值,中位数,分位数,最大/最小,方差,标准差等)
Pandas 统计数据方法汇总准备数据:一、数据的总体描述1.1 统计行数 len(df)1.2 统计有多少种不同的值 df['lable'].nunique()1.3 对 列 中每种不同的值 进行计数 df['lable'].value_counts()1.4 整体统计描述 df.describe()1.4.1 仅对数值型1.4.2 对所有类型 df.describe(include='all')1.4.3 对指定的列二、指定统计方式2.1 求和 sum()2.2 计数 df.count()2.3 中位数原创 2020-05-21 16:42:50 · 91666 阅读 · 0 评论 -
Python Pandas 列数据筛选方法汇总
Pandas 列数据筛选方法汇总数据准备:一、筛选得到指定的列1.1 根据 label 选择特定的几列1.2 选择单列的两种方式1.3 通过正则表达式选择列二、同时对 行 和 列 进行筛选2.1 通过切片 df.loc[ : , : ]2.2 通过选择 序号 选择列 df.iloc[ : , : ]2.3 对 特定 列的数据进行逻辑筛选数据准备:import pandas as pd# 假设有 5 个人,分别参加了 4 门课程,获得了对应的分数data = {'name' : pd.Series(原创 2020-05-20 20:21:09 · 45587 阅读 · 0 评论 -
Python Pandas 行数据筛选方法汇总
Pandas 行数据筛选一、准备数据二、通过逻辑规则筛选(大于/小于等)三、删除重复元素三、显示最前面 / 最后面的 n 行3.1 显示前面 n 行3.2 显示后面 n 行四、随机抽取4.1 随机抽取一定比例4.2 随机抽取 n 行五、切片选取特定范围六、排序并选取最值6.1 选取最大的 n 个值6.2 选取最小的 n 个值一、准备数据import pandas as pd# 假设有 5 个人,分别参加了 2 门课程,获得了对应的分数data = {'name' : pd.Series(['Alic原创 2020-05-19 20:48:24 · 22642 阅读 · 0 评论 -
Python Pandas 数据拼接/排序/重置
Pandas 数据拼接/排序/重置一、数据拼接1.1 行拼接(纵向,第 0 维)pd.concat([df1,df2])1.2 列拼接(横向,第 1 维)pd.concat([df1,df2], axis=1)二、排序2.1 从小到大排序(默认)df.sort_values()2.2 从大到小排序(逆序)df.sort_values(ascending =False)2.3 对 index 进行排序 df.sort_index()2.4 对 index 进行重置(变成默认的0~n)df.reset_inde原创 2020-05-18 19:15:31 · 2498 阅读 · 0 评论 -
Python Pandas 改变数据结构 Reshaping Data
Pandas - Reshaping Data一、案例数据准备二、将所有数据展开,汇聚到行显示2.1 全展开2.2 展开特定的列三、将汇聚的数据分散到列显示(类似数据透视表)3.1 显示其中一列3.2 显示其中一行一、案例数据准备import pandas as pd# 这里假设我们有 5 个人,每个人有 2 种属性数据,共 15 个元素d = {'name' : pd.Series(['a', 'b', 'c', 'd','e'], index=[0,1,2,3,4]), 'attri_1'原创 2020-05-17 19:55:50 · 607 阅读 · 0 评论 -
Python Pandas 对列/行 Column/Row 进行选择,增加,删除操作
Pandas 的列/行操作一、列操作1.1 选择列1.2 增加列1.3 删除列(del 和 pop 函数)二、行操作2.1 选择行2.1.1 通过 label 选择行(loc 函数)2.1.2 通过序号选择行(iloc 函数)2.1.3 通过序号选择行切片2.2 增加行(append 函数)2.3 删除行(drop 函数)一、列操作1.1 选择列d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two' : pd.Series(原创 2020-05-16 19:26:56 · 9555 阅读 · 0 评论 -
Python Pandas 创建 DataFrame 的四种方法
Pandas 是 Python 的一个数据分析包,最初由 AQR Capital Management 于2008年4月开发,并于2009年底开源出来,目前由专注于 Python 数据包开发的 PyData 开发团队继续开发和维护,属于 PyData 项目的一部分。Pandas 最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。Pandas 的名称来自于面板数据(panel data)和 Python数据分析(data analysis)。在深度学习中 Panda原创 2020-05-15 20:29:12 · 109235 阅读 · 0 评论 -
Python的并行处理模块multiprocessing,把你的处理速度翻N倍
深度学习中,我们常常需要处理海量的数据所以为了节约时间,要充分压榨CPU/GPU的计算能力,那并行处理是不可少的!而万能的 Python 自带一个非常简单易用的并行处理模块:multiprocessing,这里介绍其中一种用法这种用法非常适合嵌入到深度学习数据处理中程序实现:from multiprocessing import cpu_count, Poolimport numpy as npimport time# cpu 数量cores = cpu_count()# 分块个数p原创 2020-05-14 22:25:32 · 1776 阅读 · 0 评论 -
一条语句实现Python字典 key 和 value 对调
程序实现:a = {1:'a',2:'b',3:'c'}b = {value:key for key,value in a.items()}print(b)运行结果:{'a': 1, 'b': 2, 'c': 3}原创 2020-05-12 20:56:58 · 1264 阅读 · 2 评论 -
Python最简单的永久存储:pickle模块
现在深度学习很多使用的是动态图,方便调试程序但是随之也带来了一个问题,就是如果程序中途,我们关闭了运行环境那再进入以后,中间变量就没了,要从头运行一遍对于深度学习来说,很多数据的处理也能是批量进行,中间变量如果一旦损失,那非常浪费时间那最好的方法就是把内存中的数据暂时存放到硬盘上,这样就断电也不丢失啦!在 Python 中,虽然有很多存储模块,但是我觉得最简单的就是 pickle 模块了程序案例:import pickleimport numpy as npa = np.array([[原创 2020-05-11 20:08:22 · 224 阅读 · 0 评论 -
OpenCV绘制透明底的图片,简单易懂讲解alpha通道怎么用
今天忽然想做抠图和图形绘制,那这里就涉及到一个透明底的问题OpenCV是很强大的,但是网上大多教程并没有讲清楚 alpha 通道的参数怎么设置首先我们来看最简单的非 alpha 通道代码:import numpy as npimport cv2# 初始化一块400*400的画布,注意这里的画布是三通道的,也就是彩色图像image = np.zeros((400, 400, 3), d...原创 2020-05-02 15:49:32 · 4346 阅读 · 0 评论 -
PyCharm 中选中一个变量/函数后,所有用到这个变量/函数的地方高亮显示,改配色方案
由于 PyCharm 原来的配色方案里面,选中一个变量/函数后,所有用到这个变量/函数的地方高亮显示得实在太不明显了。有的时候阅读别人的代码,找得眼睛都要瞎了!所以要改成高亮!找了好久才找到,所以在博客里记录一下,希望对大家有帮助,当然也是防止自己下次再找不到。。。PyCharm > Preferences > Editor > Color Scheme > Gen...原创 2020-04-24 23:36:42 · 2856 阅读 · 1 评论 -
Python 生成器如何设置和使用
Python 的生成器其实可以理解为一种比较复杂的迭代器。关于迭代器,可以参考:Python 迭代器的设置和使用方法一、代码举例:def gen(x,y): txt = 'I love ' + x yield txt txt_1 = ', You love ' + y yield txt + txt_1gen_txt = gen('apple','pea...原创 2020-04-18 21:05:53 · 248 阅读 · 2 评论 -
Python openCV qt.qpa.plugin: could not find the qt platform plugin "cocoa" in "" 在Mac上的解决方案详解
这是一个不断踩坑的过程~~首先,我开始的诉求是希望可以利用 openCV 实时显示电脑摄像头获取的内容。开始用了 cv2.imshow() 结果不行。报错:qt.qpa.plugin: Could not find the Qt platform plugin "cocoa" in ""This application failed to start because no Qt platf...原创 2020-04-17 15:35:12 · 2602 阅读 · 0 评论 -
Python 迭代器的设置和使用方法
一、理解迭代器一般情况下,迭代器可以通过一个 for 循环实现。需要有两个要素:有一个容器,放置可迭代的数据。每次从容器中取得一个数据,实现迭代。二、代码实现比如利用列表作为迭代器的容器:a = [1,3,6,8]d = 0for i in a: d+=iprint(d)比如利用 range() :e = 0for j in range(5): ...原创 2020-04-17 11:42:04 · 326 阅读 · 0 评论 -
Python 进阶:递归算法的关键点剖析(阶乘,斐波那契数列案例)
Python 中,递归是一种很多人都头晕的算法。那在使用这个算法的时候,怎样可以更好地捋清楚思路呢?首先我们来看案例:一、求阶乘传统实现方式:def fact_for (x): r = 1 for i in range(1,x+1): r *= i return r递归实现方式:def fact (x): if x!=1: ...原创 2020-04-16 14:52:22 · 399 阅读 · 0 评论 -
基于百度PaddleHub实现人像美颜V1.0
AI美颜核心技术之一就是人脸关键点检测。PaddleHub已经开源了人脸关键点检测模型 face_landmark_localization。人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸相关问题的前提和突破口。该模型支持同一张图中的多个人脸检测。它可以识别人脸中的68个关键点。一、加载图片,检测关键点import cv2...原创 2020-04-15 22:27:22 · 939 阅读 · 6 评论 -
Python 列表内元素去重
最简单的方法:a = [1,1,3,3,4,4,6,6,2,2]b = set(a)a = list(b)print(a)[1, 2, 3, 4, 6]优点:简洁缺点:列表排序打乱保留原排序的方法:a = [1,1,3,3,4,4,6,6,2,2]c = []for i in a: if i not in c: c.append(i)print(...原创 2020-04-15 09:06:51 · 337 阅读 · 0 评论 -
Python 的简洁表达:for语句,if语句,3变量值互换
Python 语句遵循的是简洁为美的原则,所以有很多表达方式非常简洁。同时在熟练以后也不会牺牲可读性。一、for 语句比如我们要求 n2n^2n2 的值的列表,其中,nnn 的范围是1~10,我们可以这样写:>>> answer = []>>> for i in range(1,11): answer.append(i*i) >>&...原创 2020-04-14 19:52:47 · 448 阅读 · 0 评论 -
Python 逻辑运算符优先级(not,and,or)
先看案例:>>> not 1 or 0 and 1 or 2 and 3 or 4 and 5这条语句的结果是:3而不是:5因为 Python 中逻辑运算符有优先级:not > and > or所以上述语事实上是:>>> (not 1) or (0 and 1) or (2 and 3) or (4 and 5)这里需要注意,在 ...原创 2020-04-13 16:57:12 · 6861 阅读 · 0 评论 -
Python 操作excel:修改excel文件中的数据(附 xlutils.copy 无法使用的解决方案)
这里我们需要使用到两个package:xlrd 和 xlutils但是在使用 xlutils 的时候遇到了不少坑!比如找不到模块:module 'xlutils' has no attribute 'copy'看了下安装的 package 文件,发现 __init__.py 是空的!于是又去查阅 github 上的信息:xlutils 在 github 上的链接发现 __ini...原创 2020-04-12 11:37:02 · 3613 阅读 · 2 评论 -
Python 在 conda 中安装了包,但是 pycharm 中无法引用的问题解决
一、进入 PyCharm 的设置二、找到 Interpreter 选项三、进入 Show All四、点击“+”五、选择 Conda 里面所对应的环境即可原创 2020-04-11 14:45:14 · 7532 阅读 · 5 评论 -
Python pip install 下载速度太慢怎么办
假设我们要安装 moviepy在 mac 终端中切换激活我们需要使用的 Python 环境然后用以下语句指定从清华源安装:pip install moviepy -i https://pypi.tuna.tsinghua.edu.cn/simple速度飞快!!!...原创 2020-04-11 13:36:38 · 823 阅读 · 2 评论 -
Python 操作excel:从excel文件中读取数据
这里我们用到的库是:xlrd代码实现import xlrd# 打开一个 workbookworkbook = xlrd.open_workbook('./test.xlsx')# 获取所有 Sheet 的名称worksheets = workbook.sheet_names()print('worksheets is %s' % worksheets)# 定位到 Sheet1...原创 2020-04-10 20:44:58 · 1371 阅读 · 0 评论 -
Python 匿名函数,lambda 函数怎么用
一、为什么要用匿名函数为了使得写程序更高效。有时候,我们需要写个小小的函数,便于在一段程序里面反复使用。但是如果单独写一个函数,然后在主程序中调用,感觉很麻烦!这时候就需要用到匿名函数了。二、和传统函数的区别比如一个比大小的函数,看程序实现:1. 传统函数:>>> def num_max(x,y): if x>= y: return x else:...原创 2020-04-09 13:31:50 · 137 阅读 · 0 评论 -
Python 使用 shuffle() 乱序排列/打乱序列/打乱列表
在 Python 中,列表和元组中的元素是有顺序的,但是由于元组不可变,所以一般我们涉及到打乱操作,都是针对的列表。在深度学习中,由于原始训练数据可能存在顺序性,当我们分批成 mini batch 进行学习的时候,后面的数据会对系数影响更大,所以这种顺序性不是我们想要的,我们希望数据的分布更为均匀,所以“打乱顺序”操作用的非常多。我们需要用到 random 模块下的 shuffle() 方法。...原创 2020-04-08 08:48:40 · 13947 阅读 · 0 评论 -
Python 操作excel:新建文件并写入
这里我们用到的库是:xlwt代码实现import xlwt# 创建workbook和sheet对象workbook = xlwt.Workbook() # 注意Workbook的开头W要大写,因为是个类对象sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)# 向sheet页中写入数据sheet1.write(0...原创 2020-04-07 09:09:41 · 757 阅读 · 0 评论 -
Python 列表内字符串按照规则排序(字符串列表的排序)
我们经常遇到一些文件名是字符加上数字的组合,这个时候直接用 sort() 或者 sorted() 就无法按照需求进行排序。比如:name_list = ['img_496.jpg', 'img_414.jpg', 'img_106.jpg', 'img_330.jpg', 'img_507.jpg']这里我们可以引入正则表达式,来帮助排序:import renew = sorted(n...原创 2020-04-06 10:55:15 · 3057 阅读 · 0 评论 -
Python 分割字符串:split()
代码案例>>> txt = 'we trust AI!'# 默认是按照空字符来分割,分割所有>>> txtlist = txt.split()>>> txtlist['we', 'trust', 'AI!']# 指定按照哪个字符来分割>>> txtlist = txt.split('u')>>&g...原创 2020-04-05 15:50:38 · 632 阅读 · 0 评论 -
Python 复制和移动文件:shutil
用 Python 来进行文件的复制和移动操作。需要利用 Python 的标准库 shutil。程序实现:一、复制文件# 复制文件:shutil.copyfile("./file_old.jpg","./file_new.jpg") # 只能对文件进行操作shutil.copy("./folder_1/file_old.jpg","./folder_2")shutil.copy("....原创 2020-04-05 14:20:21 · 851 阅读 · 0 评论