自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

从此做一个俗人

欢迎热爱AI的朋友

  • 博客(163)
  • 资源 (1)
  • 收藏
  • 关注

原创 新装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”:”[email protected]”, “licenseRe

2021-10-24 21:49:30 247

原创 cuda10.2切换到cuda9.0 ubuntu

1.本机原始的cuda是10.2版本,现在要下载新的cuda9.0版本,并切换2.步骤如下:1.https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux 上下载cuda9.0推荐使用 runfile,因为使用.deb可能会将已经安装的较新的显卡驱动替换。2.安装 cuda9.0sudo chmod +x cuda_9.0.176_384.81_linux.run./cuda_9.0.176_384.81_linux

2021-09-26 16:27:36 474 1

原创 python中的按位取反~[深度探究]

1.直接上python中的~代码:>>> a = 3>>> b = ~3>>> b-42.是不是觉得和自己所理解的按位取反不太一样?确实如此。① 我们理解的应该是这样的:3的二进制表示为(假设一个字节):0000 0011那么对其进行按位取反后,应该为:1111 1100(最开头的1为符号位),这个结果不应该是-124吗?当然不是了,有这样理解的同学肯定是没有掌握清楚计算机中的二进制表示(原码、反码、补码),详情可以参见一下我的另一

2021-03-30 18:36:58 1689

原创 原码反码补码、二进制加减法知识点-python

1.概览在计算机中,加减乘除运算由CPU实现,每次运算均需要将数据加载到内存中,处理后再将结果写入内存里。由于计算机只认识0和1,所以所有运算都是以二进制形式进行的。两个数的加法是直接用两者的补码相加,用补码的原因是:1. 将正数的符号位改为1来表示负数,这样的求和结果是不正确的;2. 正数的原码、反码、补码是相同的。2.正数的原码、反码、补码以8位CPU为例:+1的原码、反码、补码均为:0000 0001,其中最前面的一位是标志位(0表示正数,1表示负数)。这里补充一下,8位有符号二进制正数的范

2021-03-30 16:38:10 1561 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 6550

原创 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 556

原创 TensorFlow GAN项目程序回顾2020.12.03

1.前言GAN项目被我搁置一旁很久了,最近想回顾一下写过的程序,看看能不能发现一些错误或是从中得到一些新的灵感和启发。2.程序回顾废话不多说,直接上代码,我只挑一些比较重要的进行分析。TensorFlow-gpu版本:1.6.0(1)sys.pathPython在看一个模块是否存在时首先会看看自身内核中的模块,如果不存在,则就要到sys.path中去找,print(sys.path)输出的是所有路径,如果你是自定义的模块,就要通过sys.path.append加入模块所在的目录即可,否则impo

2020-12-03 18:28:11 195

原创 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 146

原创 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 161

原创 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 2462

原创 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 794 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 1526

原创 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 1030

原创 python ^ 与 - +是有运算的先后顺序的

直接上例子:>>> a = 2>>> b = 3>>> a^b+16>>> (a^b)+12也就是说,+是优先于^进行的

2020-10-05 15:48:05 623

原创 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 133

原创 python ^ & 操作在两整数加法运算中的妙用

问题描述:如何不使用+实现两个整数的加法(包括负数)?解释:这就是要让我们手动实现计算机中对两整数加法的实现呀那计算机怎么实现加法呢?当然是用二进制呀二进制加法的情况也就几种,总结下就是使用^实现低位的加法;使用&实现进位(举个例子吧,1^1=0低位, 1&1=1进位)当然了有了低位和进位的结果还是不够的哦,因为你的进位时要进到前一位去的,所以要<<1就这样循环往复,直到进位为0就可以结束了...

2020-10-04 21:39:21 253

原创 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 123

原创 python中math.log注意点

目前发现能用的有log10(x)和log2(x)自带的底数为:自然数e

2020-10-04 10:58:53 3157

原创 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 1288

原创 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 137

原创 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 5079

原创 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 2628

原创 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 344

原创 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 131

原创 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 244

原创 opencv一些常用的操作

cv2.imread,注意是BGR读入,还是GRAY读入cv2.imwritecv2.resize,注意在高宽差距比较大的情况下,需要考虑用resize+padding,具体可以参考我的另一篇博客cv2.copyMakeBorder,这个就是上面padding操作了cv2.line,注意画线的起点和终点都必须是int,且类型是tuple或者listcv2.putTex,注意左上角的点坐标也是int+tuple/listcv2.fillConvexPoly,注意这是凸多边形哦cv2.fillP.

2020-08-27 11:56:53 234

原创 opencv+resize+padding+concate

很多时候,我们不能简单地使用cv2.resize()来直接对图像的分辨率进行调节,为什么呢?假设原始的分辨率是220*1000,也就是属于矮胖型,那么如果直接resize到1000*1200会怎样呢,肯定就是直接在高度维度上拉伸,可想而知图片肯定是很诡异的那如何让resize后的图像看起来更加美好呢?这就要使用resize+padding了第一步,resize:在保持原有宽高比(i.e. aspect ratio)的前提下,选择高、宽目标放缩比例最大的作为基准(看上面的例子可知:高的放缩比例是220.

2020-08-27 11:32:03 1000

原创 pandas项目中使用的一些代码总结

在使用逻辑筛选的时候需要注意:逻辑符号|和or虽然都可以用,但是并不完全等同,or只要左边的成立了,右边就不会执行了,|只要左右有一个成立,都行,例子:df[(df 表达式1) | (df 表达式2)],[2020-8-2补:|可以理解条件的并集,&就是交集]apply用于df的行或列,applymap用于df的每一个元素,例如:jingdu = lambda x: '%.2f' % xdf.applymap(jingdu)map用于series的每一个元素注意区别pa.

2020-08-27 10:18:26 196

原创 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-27 10:17:33 596

原创 linux 一些常规操作合集 (cat grep awk chmod vim ..)

一些其他的linux操作,可以看我的博客1.linux 以指定内存单位(B,KB,MB…)显示文件大小2.linux cat grep+head/tail3.linux grep awk head 的使用4.curl, apt-get, apt5.Linux下使用SSH连接远端服务器技术总结6.chmod操作7.vim中的必备操作文件/文件夹改名:mv A_file_name B_file_name注意:不要加上路径/,加了就变成了剪切了统计一级目录下面的文件数量:ls..

2020-08-27 10:16:23 443

原创 python multiprocessing 批量下载图片+tqdm

紧接着我的上一篇博客:用tqdm可视化loop过程,我将继续探索multiprocessing 批量下载图片+tqdm首先,是安装multiprocessing模块了,注意在python3下pip install会报错,主要是multiprocessing是第三方库,编译环境是python2,所以会有语法错误,解决方法是pip install multiprocess...

2020-08-15 09:41:43 460

原创 linux 以指定内存单位(B,KB,MB...)显示文件大小

通常使用ll命令来显示文件夹下所有文件/子文件夹的大小、权限等信息但是,这个命令显示的内存大小默认是以字节(B)为单位的,不方便查看所以,可以用一下命令来自定义单位:ll --block-size=K或者:ls -l --block-size=K又想想,是不是其他的命令,比如:df -h是否也可以这样设置呢?答案是yes,之后你可以尽情享受了~...

2020-08-15 09:37:00 7337

原创 linux cat grep+head/tail

在linux下读取csv文件通常不方便,因为通常文件会有很多行,如果等待终端全部读取完毕肯定会花很长的时间,并且很多时候我们只需要看指定的行就行了,那怎么做呢?如果只是单向(前xx行/后xx行)获取,直接运行:1.前10行: cat xxx.csv | head -n 102.后10行: cat xxx.csv | tail -n 10如果是要指定从xx行到xx行,需要使用grep:1.10行到20行: cat xxx.csv | head -n 20 | tail -n +10,怎么理解?只需.

2020-08-14 16:17:47 1177

原创 pandas读取xlsx文件,编码问题

csv是文本文件,用记事本就能打开, xlsx 是二进制的文件只有用excel才能打开,如果用记事本打开是乱码首先,我的pandas版本为1.1.0然后,使用pd.read_excel()读取,详细的方法参数可以看这篇博客,我就列举下其中的参数介绍吧:o :excel 路径;sheetname:默认是sheetname为0,返回多表使用sheetname=[0,1],若sheetname=None是返回全表 。注意:int/string返回的是dataframe,而none和list返.

2020-08-13 21:04:28 5785 2

原创 针对不同pandas版本进行列名的修改

一定要注意,不同版本的pandas,列名修改的方法是不同的对于Pandas version:1.1.01.先读csv文件,然后以DataFrame形式整体进行列名的修改:data = pd.read_csv()data.rename({'first_column_name':'xxxx'}, axis='columns', inplace=True)注意:这里是直接在data上进行了修改了,如果你不想这样,可以另外赋值2.第二种尝试,但是没有用:first_column = data..

2020-08-13 20:33:43 543

原创 tmux

ssh后,很容易网络断开,那么当前终端中这个运行的程序就会被cleared怎么才能做到后台运行,与当前终端分离开呢?考虑用tmux,直接给出常用的应用流程:安装很简单:apt-get tmux1.在当前终端下创建的新的tmux会话:tmux new -s session_name2.在创建的tmux会话中,运行程序3.按下ctrl+b(要想在tmux中使用快捷键,必须先按这个才行),然后按下d键来将tmux会话与当前终端进行分离,当然了你也可输入命令:tmux detach se..

2020-08-12 15:43:58 90

原创 linux grep awk head 的使用

我以删除docker多余名为<none>的镜像为例运行如下代码。可以得到检索出来的前14个镜像,然后批量进行删除,腾出空间sudo docker images | grep none | awk '{print $3}' | head -14 | xargs docker rmi下面将详细分析上面代码的工作流程:① 顺序是从左到右的② grep类似于group by③ awk '{print $3}'分成两部分看,第一部分awk会以空格作为分割符去分割每一行数据,prin..

2020-08-12 14:14:24 848

原创 pip install 到指定的目录下,查看pip包位置

通常,我们在需要安装pip包的时候,只会运行pip install xxxxx就好了,其实,这样做后,pip会默认将xxx包装到~/usr/lib/pythonxxx/site-packages/下,由于pip并没有conda那样强大的包管理能力,所以如果我们安装了多个python版本,那么如果要指定安装到某个python版本时,可以这样做:pip install xxxx --target=/user/local/lib/pythonxxx/site-packages/或者,在~/下创建一个名为..

2020-08-12 13:23:24 18980 3

原创 resolving xxx failed: Temporary failure in name resolution解决

切换root,sudo -i,否则没有写权限用vim或者gedit打开 /etc/resolv.conf在文件后面,新添加两行DNS地址:nameserver 202.96.209.133nameserver 61.129.88.123保存后,即可解决问题

2020-08-12 12:39:08 874

原创 curl, apt-get, apt

curl=client+url,所以很容易就能知道curl就是用于实现web和client进行文件交互的工具,常用的语法列举如下:不带参数,向web发出GET请求:curl https://www.example.com,随后返回如下HTML内容:<!doctype html><html><head> <title>Example Domain</title> <meta charset="utf-8" /&.

2020-08-12 12:32:59 1204

相关向量机RVM_MATLAB

相关向量机RVM_MATLAB,有代码注释的

2018-09-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除