python每日探索
文章平均质量分 50
做一只AI小能手
人工智能爱好者
展开
-
新装ubuntu16的推荐安装软件
1.sogou + fcitx2.google browser3.tmux4.pycharm 2018.3.5 + JetbrainsCrack-4.2-release-enc.jar + 下面的激活码ThisCrackLicenseId-{ “licenseId”:”11011”, “licenseeName”:”Wechat”, “assigneeName”:”Naked sleep of pig”, “assigneeEmail”:”1113449881@qq.com”, “licenseRe原创 2021-10-24 21:49:30 · 291 阅读 · 0 评论 -
python中的按位取反~[深度探究]
1.直接上python中的~代码:>>> a = 3>>> b = ~3>>> b-42.是不是觉得和自己所理解的按位取反不太一样?确实如此。① 我们理解的应该是这样的:3的二进制表示为(假设一个字节):0000 0011那么对其进行按位取反后,应该为:1111 1100(最开头的1为符号位),这个结果不应该是-124吗?当然不是了,有这样理解的同学肯定是没有掌握清楚计算机中的二进制表示(原码、反码、补码),详情可以参见一下我的另一原创 2021-03-30 18:36:58 · 1738 阅读 · 0 评论 -
原码反码补码、二进制加减法知识点-python
1.概览在计算机中,加减乘除运算由CPU实现,每次运算均需要将数据加载到内存中,处理后再将结果写入内存里。由于计算机只认识0和1,所以所有运算都是以二进制形式进行的。两个数的加法是直接用两者的补码相加,用补码的原因是:1. 将正数的符号位改为1来表示负数,这样的求和结果是不正确的;2. 正数的原码、反码、补码是相同的。2.正数的原码、反码、补码以8位CPU为例:+1的原码、反码、补码均为:0000 0001,其中最前面的一位是标志位(0表示正数,1表示负数)。这里补充一下,8位有符号二进制正数的范原创 2021-03-30 16:38:10 · 1786 阅读 · 3 评论 -
PIL保存二维numpy数组(2,2)为灰度图和RGB图
如果使用cv2,直接保存二维数组就可以了,只是只能保存为灰度图(8bit);如果偏要保存为RGB图,则需要使用np.stack进行深度的堆叠(每个深度R/G/B的值是相同的),然后再保存就是RGB图了如果使用的是PIL,则没那么简单了,首先PIL 只接受浮点数,其次,如果要将二维数组保存为RGB图,需要使用convert('RGB')转化为RGB映射后,再保存;或者,如果只想保存为灰度图,则也必须使用convert('L')进行转换后,再保存就可以了具体代码如下:array = np.arra..原创 2021-01-10 21:41:38 · 7026 阅读 · 0 评论 -
python一行包含if else需要注意的点
# case 1>>> a = 1+3 if 1>=1 else 2+3>>> a4# case 2>>> a = 1+3 if 1<1 else 2+3>>> a5if else 的执行体是个整体:if是1+3而不是3;else是2+3。原创 2021-01-10 14:58:17 · 569 阅读 · 0 评论 -
python list 的深浅拷贝探索
对于list来讲,除了使用copy.deepcopy()来实现深copy外,还可以使用什么更加简单的方式呢?下面先介绍copy.deepcopy()例子:>>> a = [1]>>> import copy>>> b = copy.deepcopy(a)>>> a.append(2)>>> a[1, 2]>>> b[1]补充知识: 浅拷贝只是保存了对象的指针,也就是说拷贝后的对..原创 2020-10-11 17:26:12 · 174 阅读 · 0 评论 -
python 类 探索
类实例化和调用方法class test(): def __init__(self): pass # 如果不写对象初始化的属性,必须带一个pass,或者直接去掉__init__ def SUM(self, a, b): return a+b def alter_SUM(self, a, b): a, b = b, a return self.SUM(a, b)test1 = test()print(test1.alter_SUM(1,3))"""..原创 2020-10-11 10:26:50 · 216 阅读 · 0 评论 -
python往list中添加tuple
有些时候,我们需要往一个list中新添tuple数据,但是直接添加是会报错的,如下:>>> a = []>>> a+(1,2)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can only concatenate list (not "tuple") to list其实只需要小小改动一下就能用了:>>&g原创 2020-10-10 20:13:08 · 2547 阅读 · 0 评论 -
python矩阵转置与zip(*)的使用
Python中的矩阵转置方法有如下几种:使用双重循环做(最直接,最本质的方法)import randomrow = 3column = 4array = [[random.randint(0, 10) for _ in range(column) ]for _ in range(row)]print("砸门先随机创建一个呗:", array)res = []for i in range(column): tmp = [] for j in range(row): tmp.原创 2020-10-10 20:00:29 · 848 阅读 · 2 评论 -
python 多and or执行顺序
直接上几个case看吧:case1:>>> True or True and FalseTrue>>> True or (True and False)Truecase2:>>> True and False or TrueTrue>>> True and (False or True)Truecase3:>>> True and False or True and TrueTrue&g原创 2020-10-08 12:09:36 · 1568 阅读 · 0 评论 -
python if else 与 if elif else 的区别
我们很多时候写python条件结构时不太注意if else 与 if elif else 的区别,这就会造成程序的运行结果有时与你的预期不一致那这两者有什么区别呢,上实例分析a = 3if a>3: print(1)if a<3: print(0)else: print(2)"""输出:2"""a = 4if a>3: print(1)if a<3: print(0)else: print(2)"""你觉得应该输出1?..原创 2020-10-06 13:19:37 · 1090 阅读 · 0 评论 -
python ^ 与 - +是有运算的先后顺序的
直接上例子:>>> a = 2>>> b = 3>>> a^b+16>>> (a^b)+12也就是说,+是优先于^进行的原创 2020-10-05 15:48:05 · 651 阅读 · 0 评论 -
python Counter ^
a = Counter([1,2,2,3]), b = Counter([1,2])我们现在要计算a^b,也就是a和b的交集,结果为:>>> a = Counter([1,2,2,3])>>> aCounter({2: 2, 1: 1, 3: 1})>>> b = Counter([1,2])>>> bCounter({1: 1, 2: 1})>>> a&bCounter({1: 1, 2:原创 2020-10-04 23:41:36 · 149 阅读 · 0 评论 -
python ^ & 操作在两整数加法运算中的妙用
问题描述:如何不使用+实现两个整数的加法(包括负数)?解释:这就是要让我们手动实现计算机中对两整数加法的实现呀那计算机怎么实现加法呢?当然是用二进制呀二进制加法的情况也就几种,总结下就是使用^实现低位的加法;使用&实现进位(举个例子吧,1^1=0低位, 1&1=1进位)当然了有了低位和进位的结果还是不够的哦,因为你的进位时要进到前一位去的,所以要<<1就这样循环往复,直到进位为0就可以结束了...原创 2020-10-04 21:39:21 · 276 阅读 · 0 评论 -
Python re 模块深入探索
1.re模块1.1 常用的函数(1)匹配函数re.match(pattern, string):从头开始匹配,只要头不匹配就返回None,最终只匹配第一个哦>>> import re>>> string='abc'>>> pattern1='bc'>>> res = re.match(pattern1, string)>>> type(res)<class 'NoneType'>&原创 2020-10-04 15:43:26 · 158 阅读 · 0 评论 -
python中math.log注意点
目前发现能用的有log10(x)和log2(x)自带的底数为:自然数e原创 2020-10-04 10:58:53 · 3212 阅读 · 0 评论 -
python set 和 ^ 的妙用
首先,[1,2,3]^[1]是不允许的,只能换成集合形式哦: set([1,2,3])^set([1]),结果是{2,3},实质上程序的作用是前面的集合去掉后面的集合剩下的部分,当然交换位置也是一样的结果考虑一个特殊的情况:(1) {0}^{1,2}这个结果是{0,1,2},也就是并集了...原创 2020-10-03 19:55:16 · 1383 阅读 · 0 评论 -
python sorted .sort()
sorted(A) 中的A只要是iterable的就行了A.sort()中的 A只能是list,如果你想对string使用sort(),可以使用list(A).sort(),并且sort()是直接在A上进行了覆盖修改。值得注意的是B=A.sort()的B可不是一个list,而是一个类对象哦举个例子加深印象:>>> A = 'abc'>>> A.sort()Traceback (most recent call last): File "<stdin.原创 2020-10-03 13:13:56 · 165 阅读 · 0 评论 -
python if not A 和 if A is None
if not A 和 if A is None 看起来都是在判断A是否为空,实际上这两者是不同的:(1)if not A 判断的是A是否为空,也就是说里面有东西没?(2) if A is None则判断的是A是否声明并定义了?举个例子就懂了:>>> A = []>>> A is NoneFalse # 因为A已经定义了,无论有无东西>>> not ATrue # A中为空...原创 2020-10-03 10:47:03 · 5245 阅读 · 0 评论 -
python list切片步长
nums[a:b:c]其中的a表示起始的index,b表示最终的index(不包含),c表示一次跨越的步长这里,顺便补充一下range(a,b,c)的操作与上面是一致的range在python2中就是一个list,而在python3中需要使用list(range())来转化...原创 2020-10-02 13:32:10 · 2654 阅读 · 0 评论 -
python2 和 python3 在print时的细微差别 (sep等操作)
只有python3才支持print(1,2,3, sep=' '),若必须在python2中使用,可以加一句from __future__ import print_function,其实我们无是想输出1 2 3,但如果print的对象是[1,2,3],那该如何输出相同的结果呢? 可以考虑这样:print(' '.join(map(str, [1,2,3]))),是不是很机智呢^ - ^补充一些小知识哈:(1)end=同样如此(2)python2 中的print是一个语法结构,所以如果输入print.原创 2020-10-01 14:14:26 · 382 阅读 · 0 评论 -
python ^ and or >> <<
1.简单说一下python中^, and, or的区别按位异或:^(1)任何整数与0按位异或都等于自身(2)满足交换律(3)还可以判断bool变量 True和False, 分别看成是1和0就行条件判断and(1)主要注意10000 and 3的结果为3, 3 and 10000的结果是10000,这说明了是有顺序的(2)更特殊的, 0 and 10000的结果为0,而不是10000,这是因为0是作为了False条件判断or(1)主要注意10000 or 3的结果为10000, 3 or原创 2020-09-30 18:10:27 · 168 阅读 · 0 评论 -
python set() 和 dict()
set()创建的是集合,集合中是没有重复的元素的,数据结构和list和tuple一样,通过.add()和.remove()进行增加和删除元素(注意区别dict哦),当 add重复元素的时候,会自动忽略,不会报错,但删除不存在的元素会报错; 无序,没有value,只有keydict() 或者直接{},无序,含有key和value,key不会重复,可以通过重新赋值的方式去更新某一个key的value,通过.get(key)或者[key]来获取value下面再顺便补充一下如何删除dict中的元素:全部删.原创 2020-09-19 13:21:56 · 254 阅读 · 0 评论 -
python 装饰器
修饰器的作用其实就是把会经常调用 (比如:记录程序用时等)的通用功能封装成函数的形式,而避免每次使用的时候重复输入下面不会赘述概念,直接上例子理解:(如需详细理解,可以看看这个博客哦,以下的例子也是转自该博客)1.example 1def bread(func) : def wrapper() : print("</''' '''\>") func() print("<\______/>")..原创 2020-08-10 21:55:08 · 133 阅读 · 0 评论 -
*args, **kwargs
*args将函数的输入参数转换为tuple类型example 1:def example_1(*args): print(args, type(args))example_1(1)'''ouput:(1,) <class 'tuple'>'''example 2:def example_2(x, y,z, *args): print(x,y,z, args)example_2(1, 2, 3, 4, 5)'''ouput:1 2 .原创 2020-08-10 20:31:36 · 106 阅读 · 0 评论 -
python PIL库 Image.new 和 paste
from PIL import Imageimport matplotlib.pyplot as pltimg = Image.new("RGB",(100,100))img.paste("red",(10,10,30,30))plt.imshow(img)plt.show()原创 2020-08-02 15:51:52 · 1085 阅读 · 0 评论 -
python项目代码总结
ext(0)这个一般在try-except-finally结构中使用,即:如果代码执行到最后没有报任何错误,则可以以无错误的形式退出,否则应该使用ext(1)print("show")try: sys.exit(0)except SystemExit as sys_exit: print(sys_exit) print('no error exit')finally: print('exit')"""outputs:0no error exitexit..原创 2020-08-02 15:37:43 · 400 阅读 · 0 评论 -
pandas项目中使用的一些代码总结
在使用逻辑筛选的时候需要注意:逻辑符号|和or虽然都可以用,但是并不完全等同,or只要左边的成立了,右边就不会执行了,|只要左右有一个成立,都行,例子:df[(df 表达式1) | (df 表达式2)]apply用于df的行或列,applymap用于df的每一个元素,例如:jingdu = lambda x: '%.2f' % xdf.applymap(jingdu)map用于series的每一个元素注意区别pandas中df['a'],df[['a']],df.a顺便提.原创 2020-07-31 21:59:03 · 174 阅读 · 0 评论 -
python2和python3中encoding的差别
1.写在前面的话对于一些python库,比如:requests,会用到编码和解码(requests.utils.get_encodings_from_content()),还记得写在python文件最前面的#-*- coding:utf-8 -*-吗?编码和解码的目的是什么呢?对于不同的python版本,应该采用怎样的编码解码方法呢?2.编码方式ASCIIASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符如果要处理中文,ASCII码所能产生的组合数明显力不从心原创 2020-07-31 21:43:02 · 1108 阅读 · 0 评论 -
python中np.reshape与matlab中reshape区别,以及多axis的np.mean分析[探索6]
1.np.reshape与matlab中reshape区别np.reshape是按行重组的,而matlab是按列重组的。2.多axis的np.mean分析np.mean(A,0)与matlab中的mean(A,1)都是按行取平均的。1.数据准备import numpy as npa=np.arange(18)print(a)#输出[ 0 1 2 3 4 5 6 7 ...原创 2019-10-17 15:15:10 · 1040 阅读 · 0 评论 -
python中的with使用方法[探索5]
withwith是一种上下文管理协议,目的是从流程图中把try,except和finally关键字以及资源分配释放相关代码统统去掉,简化try-excepet-finally的处理流程with确保了不管过程中是否发生异常都会执行必要的清理,释放资源,例如:文件使用后自动关闭等1.语法格式with expression [as target]: .....2.用法探究学习自博客:...原创 2019-09-30 23:54:52 · 221 阅读 · 0 评论 -
python中的super使用方法[探索4]
supersuper是一种子类调用父类的方法,在单继承时,super获取的类刚好是父类,但多继承时,super获取的是继承顺序中的下一个类。学习自博客:https://www.jianshu.com/p/8ddb595628d1假设多继承关系如下所示:Base 父类A B 子类1C 子类2class Base(object):...原创 2019-09-30 00:53:33 · 188 阅读 · 0 评论 -
python中的class类使用方法[探索3]
python中的scope和namespace(1)namespace是名字和对象的映射,多数名称空间使用dict来实现,不同namespace中的名称没有关系。(2)模块.xx, xx表示模块对象中的一个属性,可以是一个函数。(3)scope是python程序的一个namespace可以直接访问的一个文本范围。class类定义与函数定义相似,通常在类中的语句都是函数定义def,当进入一...原创 2019-09-27 22:46:15 · 839 阅读 · 0 评论 -
python中的isinstance()使用方法[探索2]
isinstance1.功能判断python中的设定函数的类型2.语法isinstance(object,classinfo)其中object就是你的对象名称,classinfo就是你要判断的类型3.与type()的区别isinstance()考虑了继承关系,会认为子类是一种父类类型,而type()不考虑class A: passclass B(A): passisin...原创 2019-09-26 21:40:18 · 1323 阅读 · 0 评论 -
python中的@、->、*arg、**kwarg使用方法[探索1]
写在前面的话虽然处于研究生阶段的我有了一定的学术成果,但是为了更好的就业,我决定每天至少学习一种python用法!做到以代码+注释的形式进行记录1.@函数装饰器注:下面的代码探究源自:http://c.biancheng.net/view/2270.html1.简单的@[85]def funA(fn): #funB被当成了输入函数fn print('A') print...原创 2019-09-25 14:08:02 · 614 阅读 · 0 评论