
Python
文章平均质量分 61
_illusion_
知乎主页:https://www.zhihu.com/people/illusions-29/posts
展开
-
pandas to_excel如何突破65535的长度限制?
问题描述有时候,我们对数据表做了groupby、set_index设置多级目录后,就会想把DataFrame的格式导出成Excel格式,而非csv格式。因为导出成csv格式,可能多级index的格式就会消失,当你要输出个漂亮的格式给人看的时候,csv显然是不如excel好看的。不过,excel格式还有个蛋疼的缺点,那就是单个excel文件输出长度65535的限制。假如你的excel文件超长了,你大概会得到以下报错:~/anaconda3/lib/python3.6/site-packages/原创 2021-08-27 11:33:00 · 5205 阅读 · 4 评论 -
LeetCode-315,这可能是你能找到的注释最丰富的Python解答——分治+索引数组
题目及链接315. 计算右侧小于当前元素的个数给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:nums = [5,2,6,1]输出:[2,1,1,0] 解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素 提示:0 <=原创 2020-12-18 21:07:56 · 612 阅读 · 1 评论 -
pytorch中state_dict()和named_parameters()的差别,以及model.buffer/model.parameter
在使用pytorch过程中,我发现了torch中存在3个功能极其类似的方法,它们分别是model.parameters()、model.named_parameters()和model.state_dict(),下面就具体来说说这三个函数的差异首先,说说比较接近的model.parameters()和model.named_parameters()。这两者唯一的差别在于,named_parameters()返回的list中,每个元祖打包了2个内容,分别是layer-name和layer-param,而pa原创 2020-11-27 12:42:02 · 6231 阅读 · 10 评论 -
LeetCode-51.N皇后,Python的回溯法实现及详细讲解
51. N皇后题目:1. 思路关于N皇后问题。它也是一个回溯问题。为何?因为它也符合类似”深度优先搜索“的树形思路。例如,以4皇后为例,4*4的棋盘,假设我们从第一行开始算起,我们会发现,如果你选择第一行第一列(0, 0),那么一次为出发点,你可以去尝试接下来第二行的所有位置(1, 0) ~ (1, 3);假设你第二行选择了合适的放置位置(1, 2),那么你可以接着以[(0,0), (1,2)]为出发点考虑第三行所有位置是否放置皇后合适。显然,每个合适的皇后放置点,都是一个树形节点的开始,如原创 2020-11-14 16:17:49 · 1446 阅读 · 0 评论 -
有关torch.nn.embedding的bug解决记录
废话少叙,直接上Traceback File "/home/shenfei1/anaconda3/envs/bert/lib/python3.6/site-packages/torch/nn/functional.py", line 1484, in embedding return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)RuntimeError: Expected tensor fo原创 2020-10-13 17:38:11 · 15443 阅读 · 6 评论 -
使用flask发送文件,或服务器端解析发来送来的文件
问题提出最近遇到个需求,需要将doc/docx/pdf/xls等格式的文件发送到服务器,交给程序去解析。所以很自然地想到了使用flask。但之前我没有用flask传输过文件,所以这里经过了一些调研和尝试后,找到了一种很方便的方法,在这里分享一下由于我们一方需要发送文件,另一方需要接收文件,所以这个解决方案中需要包括两部分——请求端POST文件到服务器; 服务器端接收并解析收到的文件。问题解决请求端发送文件请求端发送文件,是使用requests执行的。发送的文件,实际上发送的应该是该文原创 2020-09-08 10:50:59 · 3849 阅读 · 0 评论 -
Linux下使用LibreOffice+python将doc/docx/wps格式的文档转成html/txt/docx等格式
Linux下的word文档格式转换工具最近接到一个需求,要将所有不同格式的文档(包括.doc/.docx/.wps)转成统一格式,如都转为.docx,或直接转为.html 或.txt。经调研后,发现有这样几款工具:win32compython-docxpydocx…可能还有,我就不再赘述了。经过全面调研,我发现这些工具存在这样的问题——Python相关工具要么无法处理.doc(只能处理.docx),要么要求必须在windows环境下使用(如win32com)。当前大家的生产环境一般都是Linu原创 2020-07-29 11:21:22 · 12038 阅读 · 7 评论 -
tqdm模块在处理文件阅读时,如何显示出进度条?
问题提出最近,使用tqdm模块,对于大文件的阅读进行进度监控。然而我发现有个问题,即在tqdm模块使用一定没错的情况下,进度条死活打印不出来。情况如下:如上图所示,这样read file是没有进度条显示的。问题解决先说为什么,再说怎么解决。为什么没有进度条tqdm模块的进度条显示,是依赖于已知可迭代模块的总迭代数的。如迭代一个list,该list有支持len()方法获取其长度,这样,进度条才能正确显示。但read file的思路显然不是这样。因为read file的时候的迭代原创 2020-07-02 10:44:21 · 7758 阅读 · 0 评论 -
LeetCode-5.最长回文子串——又见双指针
题目:最长回文子串思路????——还是双指针回文序列,那就是正着反着读一样。所以很容易想到双指针夹逼的方法指定指针p从字符串前端开始循环,同时指定指针q从字符串后端开始循环(往前走,一次一步),q每走完全程(遇到p)或得到了答案,则p前进一步,q再从末尾开始循环; 当p、q双指针指向的字符一致时,查看[p:q+1]的子串,正读、反读是否一致: 若一致,则和当前回文子串比长度,留更长的那个。然后break内从的q指针循环(因为q越循环子串越短,后面的没必要再查) 若不一致,那就pa原创 2020-06-10 20:40:26 · 532 阅读 · 0 评论 -
LeetCode-4.寻找两个正序数组的中位数(hard)——折半查找
题目:寻找两个正序数组的中位数思路:同类题:找到有序数组中第k小的数字——折半查找(删除)计算k值——对于双数组总长度是奇数,则k为双数组长度(len//2 + 1)(向上取整);若是偶数,则取第len//2、第len//2 + 1两个位置数字的平均数; 对已知k的数组进行折半删除:将两个数组分为数组A和数组B。分别找到A[k/2]和B[k/2]。此时,可能有2种情况: 两边数组长度都足够用:pass 若有一边数组长度不够用,则直接将数组的角标移动到该数组最末位,并记录新的值..原创 2020-06-09 14:12:19 · 526 阅读 · 0 评论 -
LeetCode-3.无重复字符的最长子串——初见双指针
题目: 无重复字符的最长子串思路????:双指针题指针q永远步进一步,指针p不动,直到p/q两个指针指向的字符一样;当q指针指向的内容,和p~q之间的内容有重复时:2.1 返回p/q之间的位差,即当前的无重复子串长度2.2 再找到和q指针当前指向的字符一样的字符在p~q中的位置,将p指针指向其下一个位置;对于q而言还是步进,和普通无异当q指针到达字符串末尾的时候循环截止codeclass Solution(object): def lengthOfLongestSubs原创 2020-06-04 11:41:27 · 375 阅读 · 0 评论 -
LeetCode-1.两数之和——灵活掌握不同数据结构的特性会显著降低时间复杂度
题目:两数之和right answerclass Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ hashmap = dict() for idx,n in enumerate(nums).原创 2020-06-01 11:35:56 · 181 阅读 · 0 评论 -
Python内建函数iter()为何会接收2个参数?
### 以下内容基于Python 3.6最近,阅读Python官方多进程代码时,在最后一个例子里,发现了iter()函数还有这种用法:def worker(input, output): for func, args in iter(input.get, 'STOP'): result = calculate(func, args) output.put(result)如代码所示第二行,是对一个iter()函数生成的迭代器进行for循环,但为何ite.原创 2020-05-29 17:10:33 · 1169 阅读 · 1 评论 -
BERT、ALBERT模型加载——From pytorch_model.bin
模型文件加载的文件跳转路径:/run_classifier.py(387) AlbertForSequenceClassification.from_pretrained()->/model/modeling_utils.py(191) from_pretrained() ->/model/modeling_utils.py(363) load() ->/model/mo...原创 2020-04-27 17:00:03 · 7066 阅读 · 0 评论 -
AttributeError:'module' xxx.py has no attribute '__path__'
遇到一个局坑爹的bug,实际很简单,但却很难发现到底是哪里出了问题——Error while finding module specification for 'convert_albert_original_tf_checkpoint_to_pytorch.py' (AttributeError: module 'convert_albert_original_tf_checkpoint_...原创 2020-04-13 10:45:41 · 6932 阅读 · 0 评论 -
pip install和conda install不一样(给pip配源)——记一次让人热泪盈眶的吃一堑长一智
废话少叙。最近要在新服务器上搭建Python虚拟环境,我想将我之前本机MacBook上的虚拟环境直接copy过来。由于是跨平台(macOS -> Linux),所以没法用更简单的方法。所以正常方法应该是:pip freeze requirements.txtpip install -r requirements.txt但下载速度简直让我怀疑人生,峰速不超过9k/s。故上网搜索“a...原创 2020-02-25 17:15:44 · 1000 阅读 · 0 评论 -
Python爬虫基础——requests、BeautifulSoup
最近由于工作需要,所以学习了一些爬虫小知识。之前一直觉得爬虫是黑科技,里面的弯弯绕绕多得很,各种反爬技术和更高的爬虫手段层出不穷,要学习是个难事。后来发现其实并不难,对于没有刻意的反爬技术的网站而言,基本就是以下两个Python库的使用——requests BeautifulSoup首先,当然是安装这两个包了。安装后,一个最简单的爬虫流程,就是,先向URL发出GET请求:(假设我们爬取某医...原创 2020-01-07 15:23:03 · 588 阅读 · 0 评论 -
【解决】为何python程序的输出重定向到文件中会有延迟?
有时候,我们会写这样的命令行,让python结果重定向输出到某个日志文件中:$ python xxx.py args1 >> out/xxx.log$ python xxx.py args1 | tee -a out/xxx.log上面那条命令的含义就是,将xxx.py这个python文件中print()原本输出到console的内容重定向到"out/xxx.log"文件...原创 2019-11-08 17:32:57 · 5937 阅读 · 3 评论 -
python自学,day02(函数)
1.python函数可以同时返回多个值,但其实就是一个tuple。返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值。这么说来,python函数返回的仍是“单一值”。(说的有点绕了)2.可变参数:def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * ...原创 2018-09-08 13:02:02 · 489 阅读 · 0 评论 -
pandas多级目录的层次索引
随用随查——https://blog.youkuaiyun.com/Darkman_EX/article/details/80723802原创 2019-03-31 15:32:36 · 1554 阅读 · 0 评论 -
python字典----根据value获取对应key
Python dict根据key获取value极其方便,直接dict[key]或者dict.get(key)就可以取到,但如何优雅高效的根据key取出value?方法一:(万能法,不必要求value值的唯一)直接遍历,很简单,就不解释了,直接上代码:def get_keys(d, value): return [k for k,v in d.items() if v == v...原创 2019-04-13 16:56:33 · 55867 阅读 · 5 评论 -
在anaconda指定虚拟环境下运行jupyter notebook
最近因为要远程调试TensorFlow代码,因而在远程服务器上搭建了TensorFlow框架。但又因为远程服务器没有浏览器、没有一切可视化的界面,所以代码调试的任务就必须放在本地,也就是我得远程进行代码调试,即在本地使用服务器端的配置运行代码。为此,我在服务器端安装了anaconda,准备使用jupyter notebook这个非常直观的交互性软件进行TensorFlow的代码调试。好了,...原创 2019-06-12 17:05:29 · 7299 阅读 · 1 评论 -
tqdm模块无法单行打印进度条
问题定位:python的tqdm模块用于进度条打印等功能,在大部分IDE、大部分情况下是可以正常打印的,但当你手动停止了tqdm管理的代码块后,就会出现以下场景:如上所示,此时的tqdm模块无法单行打印进度条,有的时候还会每两个进度条之间空一行打印,十分混乱问题解析:为何无法再一行内完成进度条打印呢?因为若你之前的tqdm管理的代码块没有被正确close的话(比如使用了Ctrl...原创 2019-06-19 15:54:11 · 12794 阅读 · 9 评论 -
pandas禁用科学计数法、输出时显示全部行
禁用科学计数法一句话搞定:pd.set_option('display.float_format',lambda x : '%.3f' % x)禁用科学计数法,小数保留3位输出时显示全部行一句话搞定:pd.set_option('display.max_columns', None)`PERFECT!`...原创 2019-08-21 15:28:28 · 6347 阅读 · 0 评论 -
【python数据结构与算法】LeetCode215. 数组中的第K个最大元素
题目链接:LeetCode215题目在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入:[3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入:[3,2,3,1,2,4,5,5,6] 和k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ ...原创 2019-03-12 00:03:25 · 334 阅读 · 0 评论 -
【python数据结构与算法】LeetCode 48.旋转图像
题目链接:LeetCode 48题目内容:给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4...原创 2019-03-02 15:25:46 · 376 阅读 · 0 评论 -
【python数据结构与算法】LeetCode33.搜索旋转排序数组
题目链接:LeetCode 33题目内容:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例, [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums...原创 2019-02-27 17:07:25 · 466 阅读 · 0 评论 -
【python数据结构与算法】几种排序算法:冒泡排序、快速排序
以下排序算法,默认的排序结果是从小到大。一.冒泡排序:1.冒泡排序思想:越大的元素,就像越大的气泡。最大的气泡才能够浮到最高的位置。具体来说,即,冒泡排序有两层循环,外层循环控制每一轮排序中操作元素的个数——冒泡排序每一轮都会找到遍历到的元素的最大值,并把它放在最后,下一轮排序时便不再遍历它;内层循环是根据数值大小来交换数对——谁更大,谁就会被换到后面去。2.代码如下:d...原创 2018-10-17 00:37:16 · 344 阅读 · 0 评论 -
sklearn之Cross-validation、GridSearchCV,以及训练集(train)、测试集(test)、验证集(validate)的辨析
1.训练集(train)、测试集(test)、验证集(validate)对于初学者而言,训练集、测试集、验证集这三个词可能会让你很迷糊,特别是后两者。这里我尽量用简单的话说一下我自己的理解,希望可以讲明白: 对于机器学习模型训练而言,一般是分为训练集和测试集的。训练集有input(X)和label(y),测试集只有input(X),它的label是要测试集训练好的模型去预测的...原创 2018-09-29 00:41:15 · 15447 阅读 · 6 评论 -
日常小知识点积累:python list列表推导式、pandas.get_dummies、pandas.DataFrame.dtypes
1.列表推导式基本形式: result = [item for item in squence <if conditions>] 举例:在以下球员姓名名单中找出名字中含有字母‘a’的球员roster = ['Irving','Hayward','Horford','Tatum','Jaylen','Rozier','Smart']contains_a = [i fo...原创 2018-09-14 10:00:31 · 1347 阅读 · 0 评论 -
用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
最近在做数据处理的时候,遇到个让我欲仙欲死的问题,那就是数据中的空值该如何获取。我的目的本来是获取数据中的所有非零且非空值,然后再计算获得到的所有数据计算均值,再用均值把0和空值填上。这个操作让我意识到了i is None/np.isnan(i)/i.isnull()之间的差别,再此做简单介绍:1.关于np.nan:先明确一个问题,即空值的产生只有np.nan()一种方法。# n...原创 2018-09-16 02:19:50 · 66848 阅读 · 11 评论 -
离散型变量的编码方式——one-hot与哑变量(dummy variable)
我们在用模型去解决机器学习问题的时候,要提前进行“特征工程”。而特征工程中很重要的就是对特征的预处理。当你使用的是logistic回归这样的模型的时候,模型要求所有特征都应该是数值型变量,即连续的。但我们生活中常常遇到类别型变量(categorical variable),例如著名的Kaggle泰坦尼克生还预测这个比赛中,乘客从哪里上船(Embarked)这个变量就是类别型变量。这三个登船点两...原创 2018-09-12 10:47:42 · 14865 阅读 · 1 评论 -
numpy中mgrid()和meshgrid()函数
最近看到一篇很清晰的讲解mgrid()和meshgrid()函数的文章,收藏并转载于此,原文链接:https://www.cnblogs.com/shenxiaolin/p/8854197.html 一、meshgrid函数meshgrid函数通常使用在数据的矢量化上。它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。 示例展示...转载 2018-08-25 23:40:50 · 16158 阅读 · 0 评论 -
np.random.seed()、np.random.random()系列函数、np.squeeze()的用法
在最近的学习中遇到了这两个函数,详细说一下这两个函数的使用方法: 1.np.random.seed():这个函数控制着随机数的生成。当你将seed值设为某一定值,则np.random下随机数生成函数生成的随机数永远是不变的。更清晰的说,即当你把设置为seed(0),则你每次运行代码第一次用np.random.rand()产生的随机数永远是0.5488135039273248;第二次用n...原创 2018-08-26 20:13:26 · 11927 阅读 · 0 评论 -
关于python的排序
python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级python list排序中,后两中方法还可以加入条件参数进行排序。 reverse()方法将列表中元素反转排序,比如下面这样>>> x = [1,5,2,3,4]>>> x.reverse()>>>...转载 2018-08-22 15:35:29 · 213 阅读 · 0 评论 -
sklearn中Pipeline的使用方法
转载自https://www.jianshu.com/p/9c2c8c8ef42d Pipeline可以将许多算法模型串联起来,比如将特征提取、归一化、分类组织在一起形成一个典型的机器学习问题工作流。主要带来两点好处:直接调用fit和predict方法来对pipeline中的所有算法模型进行训练和预测。 可以结合grid search对参数进行选择。在下面的例子中,我们使用决策树模...转载 2018-10-17 01:35:35 · 22992 阅读 · 0 评论 -
【python数据结构与算法】【剑指offer】字符串的排列
题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba,且要求输出字符串按序排列,不可重复 思路:其实排列问题的思路很简单,有点类似《剑指offer》里那道“青蛙跳台阶”的题目,即——对于字符串长度为n的情况,将第一位的情况固定后,剩下的就是(n-1)长度...原创 2018-10-22 22:09:41 · 377 阅读 · 0 评论 -
【python数据结构与算法】链表——链表中环的入口节点、两个链表的第一个公共节点(相交链表)
如题,这类问题在LeetCode上和剑指offer上总共有这些涉及:LeetCode:141,142,160 剑指offer:两个链表的第一个公共节点(默认是无环单链表)、链表中环的入口节点 补充:两个未知是否有环的单链表第一个公共节点我直接叙述第三个问题,也就是补充问题。因为问题3包含了:判断链表是否有环(输出环的入口节点)、无环单链表相交的问题,以及两个有环单链表的相交问题、一个有环...原创 2019-01-03 12:40:29 · 431 阅读 · 0 评论 -
【python数据结构与算法】平衡二叉树
判断一棵二叉树是否为平衡二叉树:LeetCode:110.平衡二叉树;剑指offer:平衡二叉树用递归函数处理二叉树是否平衡的判断问题: 原因:因为递归函数很强大。对于二叉树的递归遍历而言,每个二叉树节点都会函数访问3次,分别是“一开始”、“其左子树遍历完之后”和“其右子树遍历完之后”。因而我们可以利用这样的性质来规划我们的函数 递归过程要返回给父节点的信息:子树是否平衡、子树高...原创 2019-01-07 00:59:57 · 1335 阅读 · 2 评论 -
【python数据结构与算法】二叉树的“后继节点”(二叉树的下一个节点)、二叉树的序列化和反序列化
1.二叉树的“后继节点”(二叉树的下一个节点)剑指offer题目链接:二叉树的下一个节点二叉树的后继结点定义:一棵二叉树的中序遍历中,每个节点的下一个节点称为该节点的后继结点二叉树的前驱结点定义:一棵二叉树的中序遍历中,每个节点的前一个节点称为该节点的前驱结点那么,如何获得一个给定节点的后继结点?注意这个节点所在的二叉树的所有节点多一条parent指针,指向自己的父节点。头结...原创 2019-01-05 17:37:07 · 867 阅读 · 1 评论