Y 代码模式 M是markdown模式
- 浏览器地址为http://localhost:8888/
- 通过control -C终止jupyter程序
几个基本操作:
- 双击D:删除当前cell
- 单击M:转为markdown文档
- 单击Y:转为代码
- markdown文档下运行变为预览模式
%time get_fib(12000) # %time可以用来计时
用下面命令计算statement的平均运行时间:
%timeit statement
timeit会多次运行statement,最后得到一个更为精准的预期运行时间
%timeit get_fib(12000)
%time 一般用于耗时长的代码段
%timeit 一般用于耗时短的代码段
%run "./myscript.py" # %run 后面跟相对路径 就可以加载 外部的 .py文件(注意是.py文件 不是.ipynb文件)
# 绝对路径 和 相对路径 都 可以
# %run "C:\Users\jf\0\00\myscript.py"
%run "C:\Users\jf\Desktop\test.py"
快速查看当前会话的所有变量与函数名称
%who #可以查看当前会话中的变量和函数
%whos # 展示的信息更加详细
%who_ls
4. 执行Linux指令
Linux指令:
$ echo "hello world" # echo is like Python's print function
hello world
$ pwd # pwd = print working directory
/Users/jfeng # this is the "path" that we're sitting in
$ ls # ls = list working directory contents
notebooks projects
$ mkdir mm
/home/jake/projects
$ touch txt
!touch /home/nanfengpo/Desktop/xx/hello.txt
在Linux指令之前加上 !,即可在ipython当中执行Linux指令。
注意会将标准输出以字符串形式返回
四、notebook的快捷键
1、命令模式¶
• Enter: 转入编辑模式(或者鼠标双击)
• Ctrl + Enter: 运行本单元,选中本单元
• Alt + Enter: 运行本单元,在下面插入一单元
• Shift + Enter : 运行本单元,选中下个单元
五.numpy
导入numpy库
查看numpy版本
import numpy as np
np.__version__
使用np.random.randint创建ndarray 演示 ndarray 输出效果 以及 和 list 的区别
机器学习部分的函数太多,参数太复杂,这里建议把关键字参数都加上,可读性好
# 参数: low下界 high上界 size形状
# 功能: 按照指定的形状 产生一个多维数组 里面的值用随机数填充(随机数的范围是从low到high)
np.random.randint(1,5,5)
# 机器学习的库 函数很杂参数很多 建议大家把参数名都写出来 可读性好
np.random.randint(low=1,high=10,size=10)
nd1 = np.random.randint(low=1,high=10,size=3)
nd1
一、创建ndarray
1. 使用np.array()创建多维数组
参数为列表: np.array([1,2,3])
注意:
- numpy默认ndarray的所有元素的类型是相同的
- 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
# 传入列表即可创建一个多维数组
np.array([1,2,3,4,5])
# array()方法创建的多维数组 内部内容的数据类型是相同的
np.array([1,2,3])
np.array([1,2.0,3]) # 如有有浮点数就都变成浮点数了
np.array([1,2.0,'3']) # 如果有字符串就都变成字符串了
# 优先级 str > float > int
2. 使用np的常用函数(routines)创建
包含以下常见创建方法:
1) np.ones(shape, dtype=None)-np.ones(shape,-dtype=None))
功能:按照指定形状创建多维数组,并用1填充
参数:
shape 用于指定创建的多维数组的形状 可以传入2 或者 (2,3)
dtype 数据的类型 np.int8 np.float64
返回值:返沪创建好的多维数组数组
np.ones(shape=2) # 创建一个 一维数组 里面有2个元素
np.ones(shape=5)
# 里面还可以传入一系列整数
np.ones(shape=(2,3)) # 这是一个 二维数组 里面装了2个数组 里面装了3个元素
np.ones(shape=(2,3,2)) # 这是一个 三维数组 里面装了2个数组 里面装了3个数组 里面装了2个元素
# 有几个整数就是几维数组
np.ones(shape=(5,2,3)) # 这是一个三维数组 里面装了5个元素 里面装了2个元素 里面装了3个元素
np.ones(shape=(3,3)) # 里面的内容用1来填充
np.ones(shape=(3,3),dtype=np.int) # dtype用来设置数据类型
2) np.zeros(shape, dtype=float)-np.zeros(shape,-dtype=float))
功能类似np.zeros只不过不是用1填充 而是用0填充
np.zeros(shape=(3,1,1)) # 这是一个三维数组 里面装着3个元素 里面装着1个元素 里面装着1个元素```
3) np.full(shape, fill_value, dtype=None)
# shape用来指定多维数组的形状 fill_value用来指定用什么值来填充
np.full(shape=(2,3),fill_value=5)
np.full(shape=(2,3),fill_value=2)
#### 4) np.eye(N, dtype=float)[](http://localhost:8888/notebooks/00/day1/c01-numpy.ipynb#4)-np.eye(N,-dtype=float))
功能:创建一个N行N列的方阵(方阵就是行和列的数量相等的矩阵)
参数:N 指定矩阵中有多少行(也是多少列)
返回值: 主对角线上是1,其他地方是0的方阵(单位矩阵)
主对角线为1其他的位置为0(左上角的右下角的对角线叫做主对角线)
np.eye(3)
# 左上角到右下角的对角线 叫 主对角线
# 创建一个 主对角线上是1 其他地方是0 的方阵(单位矩阵)
np.eye(5)
#### 5.1) np.linspace(start, stop, num=50, dtype=None)[](http://localhost:8888/notebooks/00/day1/c01-numpy.ipynb#5.1)-np.linspace(start,-stop,-num=50,-dtype=None))
功能:把start到stop的这个范围的数,等分成num份儿,填入数组
#### 5.2) np.logspace(start, stop, num=50, dtype=None)[](http://localhost:8888/notebooks/00/day1/c01-numpy.ipynb#5.2)-np.logspace(start,-stop,-num=50,-dtype=None))
功能:把start到stop的这个范围的数,等分成num份儿,获得的值作为10的指数,求出来的值,填入数组```
参数: start开始 stop结束 num指的是从start到stop一共取几个
np.linspace(1,5,3)
np.linspace(1,5,5)
np.linspace(1,5,2)
np.linspace(1,5,6)
np.logspace(1,3,3) # 1到3取3个 1,2,3 作为10的指数 获取的数字
np.logspace(1,5,5)
6) np.arange([start, ]stop, [step, ]dtype=None)-np.arange([start,-]stop,-[step,-]dtype=None))
从start,到end,每隔step取一个值,放入一个数组
# start开始 stop结束 step步长值(每隔多少取一个值)
np.arange(1,10,2)
np.arange(1,10,1) # [start,stop) 这个区间 每隔 step 取一个值 形成一个数组
7) np.random.randint(low, high=None, size=None, dtype='l')-np.random.randint(low,-high=None,-size=None,-dtype='l'))
从low到high的范围随机取整数,填充多维数组 size用于指定数组的形状 如 2 (2,3)
np.random.randint(1,10,size=(2,3))
np.random.randint(1,5,size=(5,5)) # [low,high) 这个区间 按照size指定的形状取值 生成一个多维数组
8) np.random.randn(d0, d1, ..., dn)-np.random.randn(d0,-d1,-...,-dn))
传入几个参数,就创建几维数组
产生以0为中心 方差为1 的 标准正太分布 的随机数 填充数组
如 np.random.randn(2,3,3) 产生一个三维数组 数组中有两个数组 两个数组中分别有三个数组 三个数组中每个都有三个元素
# 有多少维就传入多少参数 每一个参数用来指定其维度中元素的个数
np.random.randn(3)
np.random.randn(3,2,3)
9) np.random.normal(loc=0.0, scale=1.0, size=None)-np.random.normal(loc=0.0,-scale=1.0,-size=None))
np.random.randn是标准正态分布(以0为中心,方差是1) normal是可以指定中心和方差的一般正态分布
loc 正态分别的中心
scale 正态分布的变化范围
size 数组的形状 如 2 (2,3)
# loc是分布中心 scale是方差
# np.random.normal(loc=0,scale=1,size=(4,4))
# np.random.normal(loc=175,scale=10,size=5)
np.random.normal(loc=175,scale=10,size=(5,10))
np.random.normal(loc=175,scale=10,size=(10,4))
10) np.random.random(size=None)-np.random.random(size=None))
size指定多维数组的形状 如 2 或者 (2,3)
函数随机生成0到1的随机数 [0,1) 填充数组
np.random.random(size=(2,3,2))
np.random.random(size=(3,4))
二、ndarray的属性
4个必记参数:
ndim:维度
shape:形状(各维度的长度)
size:总长度
dtype:元素类型
nd1 = np.random.random(size=(3,4)) # 这是一个二维数组 数组里有3个元素 里面有4个元素
nd1
nd1.ndim # 查看数组维度的属性
nd1.shape # 获取数组形状
nd1.size # 获取多维数组中元素的总个数
nd1.dtype
# matplotlib是用来绘图的库
import matplotlib.pyplot as plt
# 传入 图片地址 就可以把图片的数据加载进来 变成一个多维数组
nd2 = plt.imread('./data/jin.png')
nd2
nd2.ndim
nd2.shape
# imshow() 可以根据传入的多维数组中的数据 去渲染 图片
plt.imshow(nd2)
练习:使用随机数生成一张图片并用pyplot绘制
# (273, 411, 3)
nd3 = np.random.random(size=(273, 411, 3)) # 三维数组
nd3
lt.imshow(nd3)
网友评论