基于莫烦在youtube上发布的视频总结:
PS:最近干的事情:
1. 用两天面试了搜狐视频,下周入职,虽然投是java岗,最后是安排做数据整合。好处是所在的组毕竟是技术组,可以向周围大佬们好好学习,积攒脚本经验……所以,好好回顾了一下python。
2. 建议看中Udacity课程的同学们自己去youtube上搜一搜,说不定就有视频。此外我个人觉得内容有点太浅,数据分析师纳米学位提供的教程中很多地方讲的有些浮于表面。例如在机器学习的部分基本上就讲了怎么使用sklearn,其他的基本思想和大学课上老师讲的差不多。
3. 调试Python使用ipython+vim不能太爽。在pycharm中也有终端,配合使用能大大提高变成效率; 也可以用vscode,此处不得不说一声vscode真是神器……另外,喜欢把代码整理成文档的可以用ipython notebook,界面美观,还是基于浏览器的。
#-*- coding:utf-8 -*- import numpy as np array = np.array([[1,2,3], [2,3,4]]) ####### numpy 属性######### print(array) print "number of dimension: ", array.ndim print "shape: ", array.shape print "size: ", array.size # 创建array a = np.array([2,2,3,4]) print a # 注意,和list不同的地方在于没有,分隔 a = np.array([2,2,3,4], dtype=np.int) print a.dtype # 生成1 a = np.ones((3,4), dtype=np.int) # 生成接近于0的矩阵 a = np.empty((3,4)) # 等差数列 a = np.arange(10,20,2) # 同上 a = np.arange(12).reshape((3,4)) # 生成线段 a = np.linspace(1,10,5) ######## numpy 计算######## a = np.array([10,20,30,40]) b = np.arange(4) c = a -b c = 10*np.sin(a) # 找到小于某一个值的元素 print b<3 # 矩阵运算 a = np.array([[1,1],[0,1]]) b = np.arrange(4).reshape(2,2) b = np.arange(4).reshape(2,2) # 逐个相乘 c = a*b # 矩阵乘法 c_dot = np.dot(a,b) c_dot_2 = a.dot(b) # 随机生成 a = np.random.random((2,4)) # 进行计算 np.sum(a) np.max(a) np.min(a) # 在某一行进行运算 np.sum(a, axis=0) np.sum(a, axis=1) # axis = 1 表示在列中计算 # axis=0在行中计算 A = np.arange(2,14).reshape(3,4) # 计算平均值 mean = np.mean(A) A.mean() np.average(A) # 求中位数 np.median(A) # 累加 np.cumsum(A) # 累差 np.diff(A) # 找出非零数 np.nonzero(A) # (array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), # array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3])) # 每行排序 np.sort(A) # 矩阵反向(转置) np.transport(A) # clip功能 np.clip(A, 5, 9) # 保留5-9之间的数字 ######### numpy索引 ######## A = np.arange(3,15).reshape(3,4) ## 访问 print A[2] A[1][1] # :代表的全部的数 A[1,:] ## 迭代 # 默认迭代的是行 for row in A: print row # 迭代列 for column in A.T: print column # 迭代全部项目 # flat迭代器 for i in A.flat: print i # flatten() print A.flatten() ## 合并 A = np.array([1,1,1]) B = np.array([2,2,2]) # 竖向合并(上下合并) C = np.vstack((A,B)) # 横向合并(左右合并) D = np.hstack((A,B)) # 由于此时AB为序列,合并为[1,1,1,2,2,2] # 注意:不能把序列变为矩阵 A[np.newaxis,:] # 横向添加维度,把序列转换为矩阵 A[:,np.newaxis] # 纵向添加维度 A = np.array([1,1,1])[:,np.newaxis] B = np.array([2,2,2])[:,np.newaxis] # 进行多个array的纵向、横向的合并 C = np.concatenate((A,B,B,A), axis=0) # 上下合并, 后一个指定方向 ####### numpy分隔 ######### A = np.arange(12).reshape(3,4) # 均匀分割 # 进行纵向分割 np.split(A, 2, axis=1) # 进行横向分隔 np.split(A, 3, axis=0) # 进行纵向分割 # 不均匀分隔 np.array_split(A,3,axis=1) # 少参数的api np.vsplit(A,3) np.hsplit(A,2) ####### numpy赋值######### a = np.arrange(4) # numpy array的性质 a = np.arange(4) b = a # b是a的一个引用,a改变,b也改变 c = b # 同理 a[0]=11 b is a # True c is a # True ## deep copy # 不让二者关联在一起 b = a.copy() a[0]=6 b is a # False ######## 补充 ########### # 1. 使用argsort函数,对二维数组中的某一行或列进行排序 data = np.array([[1,2,3], [2,2,1], [23,1,6]]) data = data[data[:,2].argsort()] #按照第三列进行排序 ''' 结果: array([[ 2, 2, 1], [ 1, 2, 3], [23, 1, 6]]) '''