Jupyter&numpy

作者: 仙灵儿 | 来源:发表于2018-08-07 00:14 被阅读29次

    Y 代码模式 M是markdown模式

    几个基本操作:

    • 双击D:删除当前cell
    • 单击M:转为markdown文档
    • 单击Y:转为代码
    • markdown文档下运行变为预览模式
    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 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)
    

    相关文章

      网友评论

        本文标题:Jupyter&numpy

        本文链接:https://www.haomeiwen.com/subject/viogvftx.html