Ubuntu16.04系统切换Python2和python3
删除原有的链接文件:
sudo rm /usr/bin/python
建立指向python3的软链接:
sudo ln -s /usr/bin/python3.5 /usr/bin/python
查看python版本:
python --version
list和array的区别及相互转换
list不能整体进行运算
array可以整体的进行各种计算
list = array.tolist()
array = np.array(list)
控制台输出带颜色(warning or error)
方式一:
class bcolors:
HEADER = ‘\033[95m’
OKBLUE = ‘\033[94m’
OKGREEN = ‘\033[92m’
WARNING = ‘\033[93m’
FAIL = ‘\033[91m’
ENDC = ‘\033[0m’
BOLD = ‘\033[1m’
UNDERLINE = ‘\033[4m’
print bcolors.WARNING + “Warning: No active frommets remain. Continue?” + bcolors.ENDC
方式二:
sys.stdout.write(‘\033[91m’)
sys.stdout.write(str)
sys.stdout.write(‘\033[0m’)
sys.stdout.flush()
总结:使用带颜色的文本输出到控制台。
回调函数理解
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
获取当前执行主脚本的方法
import sys
print sys.argv[0]
print __file__
numpy中array和asarray的区别
相同点:二者都是将数据转化为ndarray
不同点:当数据源是ndarray时,array仍然会复制一个副本,而asarray此时就相当于引用了。
@property
将类的方法装饰成类的属性,用 . 调用,但是不能通过 . 来修改。未完待续。
np.meshgrid()
用两个坐标轴上的点在平面上画网格
import numpy as np
a = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7])
c, d = np.meshgrid(a, b)
print(c, '\n\n ',d)
输出
[[1 2 3 4]
[1 2 3 4]
[1 2 3 4]]
[[5 5 5 5]
[6 6 6 6]
[7 7 7 7]]
axis=0, 1, 2
axis = 0 # 对列进行操作,其他维度不变 concat就是竖向连接
axis = 1 # 对行进行操作,其他维度不变 concat就是横向连接
axis = 2 # 按通道进行操作,其他维度不变(对于图片)concat就是按层连接
ndarray.shape
[2,3,4,5] # 2个大的,3层,4高(行数),5宽(列数)
NCHW ndarray和cudnn的格式
NHWC tensorflow的默认格式
map方法
list(map(lambda c: colorsys.hsv_to_rgb(*c), hsv))
Here,hsv is tuple with length of n.
*args 是可变参数, args 接收的是一个 tuple
**kw 是关键字参数, kw 接收的是一个 dict
clamp函数
x.clamp(a, b) 用于判断x是否在a和b之间,如果比a小则返回a,比b大则返回b。在其间的话,返回自己本身。
range和arange的区别
range(start, end, step),返回一个list对象,起始值为start,终止值为end,但不含终止值,步长为step。只能创建int型list。
arange(start, end, step),与range()类似,但是返回一个array对象。需要引入import numpy as np,并且arange可以使用float型数据。
python下划线
单下划线 开始的成员变量叫做保护变量,只有类对象和子类对象能访问;
双下划线 开始的是私有成员,只有类对象自己能够访问,子类对象也不能访问。
skimage和PIL
读取图片:
skimage.io.imread()
Image.open()
图片格式:
skimage [h, w, c]
img[50:100,50:100] # 50~100 行,50~100 列(不包括第 100 行和第 100 列)
order range [0-5]
0 nearest-neighbor
1 bilinear (default)
2 biquadratic
3 bicubic
4 biquartic
5 biquintic
Image
Image.open (width, height)
待续
调用函数时使用和 *
假设有函数
def test(a, b, c)
test(args): 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。
test(kwargs): 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。
定义函数参数时使用和*
def test(*args):
定义函数参数时 * 的含义又要有所不同,在这里 *args 表示把传进来的位置参数都装在元组 args 里面。比如说上面这个函数,调用 test(1, 2, 3) 的话, args 的值就是 (1, 2, 3) 。:
def test(**kwargs):
类似的, ** 就是针对关键字参数和字典的了。 调用 test(a=1,b=2,c=3) 的话, kwargs 的值就是 {‘a’:1,’b’:2,’c’:3} 了。