一、启动程序
执行以下命令:
jupyter notebook
注意以下几点:
- 打开地址为当前bash的目录,默认的根目录
- 浏览器地址为http://localhost:8888/
- 通过control -c 终止jupyter程序
几个基本操作:
- 双击d:删除当前cell
- 单击M:转为markdown文档
- markdown文档下运行变为预览模式
二、IPython的帮助文档
1、使用help命令
- help(len)
2、使用?和??
- len?
- len??
3、tab自动补全
4、通过shift+tab和shift+tab+tab
- shift+tab:查找某函数需要赋的参数名
- shift+tab+tab:查找某函数需要赋的参数名的具体描述以及示例
三、IPython的魔法命令
1、运行外部python文件
- %run 外部python文件路径
- 通过该python文件中的函数名直接调用
2、运行计时
- %time statement(调用函数): 一般用于耗时长的代码段
- %time statement(调用函数): 一般用于耗时短的代码段
注意: 可以使用两个百分号来测试多行代码的平均运行时间
3、执行linux命令
- 在linux指令之前加上!,即可在python当中执行linux指令
5、更多魔法指令
- lsmagic
四、notebook的快捷键
- Enter:转入编辑模式
- Ctrl-Enter:运行本单元
- Shift-Enter:运行本单元,选中下个单元
- Alt-Enter:运行本单元,在下面插入一个单元并选中新插入的单元
Y :单元转入代码状态
M :单元转入markdown状态
A :在上方插入新单元
B :在下方插入新单元
五、Numpy库
# 导入Numpy模块
- import numpy as np
# 查看版本
- np.__version__
六、ndarray的创建
# 使用np.array创建
- np.array([1,2,3,4]) # 一维
- np.array([[1,2,3,4],[5,6,7,8]]) # 二维
# 使用np的routines函数创建
- np.ones(shape,dtype=None) # 全为1
- np.zeros(shape,dtype=None) # 全为0
- np.full(shape, fill_value, dtype=None) # 按照fill_value填充
- np.eye(shape,k=0,dtype=None) # 按照shape排列,k=0时,对应的对角线全为1,其他为0。从坐标(0,0)开始数,往右k值+1,往下k值-1
- np.linespace(start,stop,num,retstep=False,endpoint=True) # 从start到stop,分为num份,retstep:等分的间距,endpoint:是否以stop结尾。
- np.arange([start, ]stop, [step, ]dtype=None) # 类比于python的range
- np.random.randint(0,150,size=(3,3)) # 随机取[0,150)之间的数,按照(3,3)排列
- np.random.randn(2,3) # 生成一个2行3列的标准正态分布
- np.random.normal(loc=0,scale=1,size=20) # 正态分布(loc:对应横坐标,scale:对应方差,size对应形状(shape))
- np.random.random(size=None) # 随机生成(0,1)之间的数,size对应形状(shape)
- np.random.randint(0,150,size=(3,3)) # 随机生成[0,150)的整数,3行3列
七、ndarray的属性
# 4个必记参数:ndim维度、shape形状、size总长度、dtype元素类型
# 例如:
- l1 = [[1,2,3,4],[5,6,7,8]]
- n1 = np.array(l1)
- n1.ndim # 2
- n1.shape # (2,4)
- n1.size # 8
- n1.dtype # dtype('int32')
八、ndarray的基本操作
1、索引(一维与列表一致,多维时同理)
- l1 = [[1,2,3],[4,5,6],[7,8,9]]
- n1 = np.array(l1)
- n1[0] # [1,2,3]
- n1[0][1] # 3
2、切片(一维与列表完全一致 多维时同理)
- l2 = [[1,2,3],[4,5,6],[7,8,9]]
- n2 = np.array(l1)
- n2[0][0:2] # [1,2]
- n2[0][::-1] # 反转[3,2,1]
3、变形(使用reshape函数,注意参数是一个tuple!)
- n3 = np.arange(6) # array([0, 1, 2, 3, 4, 5])
- np.reshape(n2,(2,3)) # array([[0, 1, 2],[3, 4, 5]])
4、级联
- a1 = np.random.randint(0,100,size=(5,5))
- a2 = np.random.randint(0,100,size=(5,5))
- display(a1,a2)
- np.concatenate()级联:
- np.concatenate((a1,a2),axis=1) # 水平级联(两组数据水平连接,成一行)
- np.concatenate((a1,a2),axis=0) # 垂直级联(两组数据垂直连接,成一列)
- np.hstack()水平级联:
- np.hstack((a1,a2))
- np.vstack()垂直级联:
- np.vstack((a1,a2))
5、切分
- a3 = np.arange(9)
- np.split切分:
- np.split(a3,3) # [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
- np.split(a3,(3,4)) # [array([0, 1, 2]), array([3]), array([4, 5, 6, 7, 8])]
- np.split(a3,(3,4,6)) # [array([0, 1, 2]), array([3]), array([4, 5]), array([6, 7, 8])]
- np.hsplit水平切分:
- np.hspilt(a3.5) # 每列取5个(按列切分)
- np.vsplit垂直切分:
- np.vsplit(a3,5) # 每行取5个(按行切分)
6、副本
所有赋值运算不会为ndarray的任何元素创建副本。对赋值后的对象的操作也对原来的对象生效。
可使用copy()函数创建副本
九、ndarray的集合操作
十、ndarray的矩阵操作
1、基本矩阵操作
# 算术运算符(+ - * /)
# 矩阵积(np.dot)
2、广播机制
规则一:为缺失的维度补一
规则二:假定缺失元素用已有元素填充
例:a = np.arange(3).reshape((3, 1)) b = np.arange(3) 求a+b
- a = np.arange(3).reshape((3,1)) # array([[0],[1],[2]])
- b = np.arange(3) # array([0, 1, 2])
- a + b # array([[0, 1, 2],[1, 2, 3],[2, 3, 4]])