继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Jupyter&numpy

幕布斯6054654
关注TA
已关注
手记 1258
粉丝 219
获赞 1011

Y 代码模式 M是markdown模式

几个基本操作:

  • 双击D:删除当前cell

  • 单击M:转为markdown文档

  • 单击Y:转为代码

  • markdown文档下运行变为预览模式

webp

ispic_a.jpg

%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 functionhello world

$ pwd # pwd = print working directory
      /Users/jfeng # this is the "path" that we're sitting in$ ls # ls = list working directory contentsnotebooks 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)



作者:仙灵儿
链接:https://www.jianshu.com/p/41bf03aa7395


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP