Python学习手册:
1.python语法:列表推导式
2.numpy 一些函数
3.matplotlib 一些函数
4.matplotlib 高阶函数
5.线程/进程 函数
6.Cython的使用
7.LMDB的读取
1.python推导式
Y_c = [['red' if y else 'blue'] for y in Y_]
将真值放if 前面,判断条件放中间(一般判断条件都会放if后面),(for后面是个列表生成器,列表生成式和推导式理解见:python高级用法)
写法有点反直观,但真的很简洁
numpy常用函数
1. x[:,0]
这部分的使用和Python切片有关,:
Python中符合序列的有序序列都支持切片(slice),例如列表,字符串,元组。
格式:【start:end:step】
start:起始索引,从0开始,-1表示结束
end:结束索引
step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值
注意切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引
几种常见的省略方式:
- 省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表
print(b1)
结果:[1, 2, 3, 4, 5, 6] - 从位置0开始到 结束位置结束,每次增加1,截取。不包含结束索引位置
print(b)
结果:[1, 2, 3, 4, 5] - 省略起始位置的索引,以及步长。默认起始位置从头开始,默认步长为1,结束位置索引为3
print(c1)
结果:[1, 2, 3] - c=a[0:5:3] #从第一个位置到第6个位置,每3个取一个值
print( c)
结果:[1, 4]
x[:,0]是由于二维数组和切片组合的缘故,出现的一种常见的写法:表示对一个二维数组,取该二维数组第一维中的所有数据,第二维中取第0个数据,直观来说,X[:,0]就是取所有行的第0个数据, X[:,1] 就是取所有行的第1个数据。
mport numpy as np
X = np.array([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11],[12,13],[14,15],[16,17],[18,19]])
print X[:,0]
结果
2. np.reshape:
X = np.vstack(X).reshape(-1,2)
这是一个numpy的使用,
reshape函数
是numpy中一个很常用的函数,作用是在不改变矩阵的数值的前提下修改矩阵的形状。
1.简单使用
2.使用缺省值-1缺省值-1代表我不知道要给行(或者列)设置为几,reshape函数会根据原矩阵的形状自动调整。
3. np.vstack:
按垂直方向(行顺序)堆叠数组构成一个新的数组。
(我觉得这个跟np.c_ 第二篇讲的是一个东西。。。。,)
(除开第一维外,被堆叠的矩阵各维度要一致。 )
例子
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
res = np.vstack((arr1, arr2))
输出为
array([[1, 2, 3],
[4, 5, 6]])
另外除了vstack,还有一个hstack
np.hstack:按水平方向(列顺序)堆叠数组构成一个新的数组
X = np.vstack(X).reshape(-1,2)
#好了回到这个式子,意思是用垂直堆叠,行缺省,列为2
4. np.squeeze
从数组的形状中删除单维度条目,即把shape中为1的维度去掉
>>> a = e.reshape(1,1,10)
>>> a
array([[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]])
print(x1) # [1,1,10]
>>> np.squeeze(a)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(x1.shape) # ( , ,10)
5. np._c
np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。
np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat()。
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.c_[a,b]
print(np.r_[a,b])
print(c)
print(np.c_[c,a])
结果展示
[1 2 3 4 5 6]
[[1 4]
[2 5]
[3 6]]
[[1 4 1]
[2 5 2]
[3 6 3]]
6. np.mgrid
grid是网格的意思
np.mgrid[start: end :step]
start:开始坐标
stop:结束坐标(不包括)
step:步长
举例子
res = np.mgrid[-3:3:.1,-3:3:.1]
生成从-3到3的二维坐标
第一部分是y轴的范围
第二部分是x轴的范围
返回数组的res[0]是y轴,res[1]是x轴