zoukankan      html  css  js  c++  java
  • 机器学习中的numpy库

            日常学习中总是遇到数据需要处理等问题,这时候我们就可以借助numpy这个工具来做一些有意思的事。

    1.生成随机数的几种方式

    
    x=np.random.random(12) ###生成12个随机数,也可以写成np.random.rand(12)、  
                         np.random.random_integers、np.random.uniform、np.random.randint(np.random.randint(1,20,(3,4),dtype='int32'))、等形式
    
    x=np.random.rand(3,4)  ###生成3行4列12个随机数
    
    x=np.random.normal(0,1,shape=(3,4))   ###生成以0为均值,1为方差的3行4列12个随机数
    
    x=np.arange(12)         ####生成0到11的矩阵
    

    2、运算

    (1)常规运算

    对于加减就不多说,乘除多说两句,就是乘法需要注意矩阵的点乘(数学正常乘法和np.matmul(a,b.T)效果一样)和*乘(俗称数乘)。例子如下:

    除法的话记住   a/b表示带余数除法   a//b表示整除   

    (2)广播机制

    广播”指的是在不同维度的数组之间进行算术运算的一种执行机制,其通过将数据矢量化进行高效的运算,而不是按照传统的对标量数据进行循环运算达到目的。

    “广播”的一个工作原则是:两个数组的维度应该相同(即要对一个二维数组进行广播,那么用来广播的数组也应该是二维的),并且只能有一个维度的长度允许不一样,且那个不一样的维度在用来广播的数组里面的长度应该为1(比如,对于一个(3,4)的二维数组,那么用来广播的数组必须是(3,1)或(1,4);比如对于一个三维的数组(3,4,5),用来广播的数组必须是(1,4,5)或(3,1,5)或(3,4,1)),这样子,我们才说两个数组是广播兼容的。广播会在沿着长度为1的那个维度进行扩散进行。(这里就知道,为什么我们需要一个长度为1的维度,其实就是广播进行扩散的维度)。例如:

    补充注意:

    numpy中a.shape为(m,)的数组在矩阵运算的过程中看作行向量处理,及a为1行m列。

    3、切片

    对于一维数组来说,python原生的list和numpy的array的切片操作都是相同的,记住一个规则arr_name[start: end: step]就可以了。同时需要注意下面几个特殊点:

    • [:]表示复制源列表
    • 负的index表示,从后往前。-1表示最后一个元素。
    • 相对于一维数组而言,二维(多维)数组用的会更多。一般语法是arr_name[行操作, 列操作]

    示例:

    4、拼接

    Python中numpy数组的合并有很多方法,如np.append() 、np.concatenate() 、np.stack() 、np.hstack()(水平拼接) 、np.vstack()(垂直拼接) 、np.dstack()(按位拼接) 其中最泛用的是第一个和第二个。第一个可读性好,比较灵活,但是占内存大。第二个则没有内存占用大的问题。

     说了numpy的诸多好处,也来说下它的不足吧--不能自动求导。这时我们可以考虑ndarray,而ndarray 和 numpy 的多维数组非常类似。然而, NDArray 提供 GPU 计算和⾃动求梯度等更多功能,这些使得 NDArray 更加适合深度学习。具体学习可以参考mxnet.ndarray官网教程。

    参考链接:

    https://blog.csdn.net/S_o_l_o_n/article/details/80859163

    https://blog.csdn.net/qq_34327480/article/details/78870350

    https://blog.csdn.net/qq_39516859/article/details/80666070

    来源:https://blog.csdn.net/xiaomu_347/article/details/85633404
  • 相关阅读:
    Kalman Filters
    基于堆栈实现计算器
    Centos 7创建软连接,硬连接的方法
    Centos 7下对磁盘的分区格式化挂载交换空间的建立
    文件的归档打包压缩解压缩
    文件目录操作命令及权限的修改设置
    用户添加修改文件的操作
    linux今日学习命令 who
    CentOS安装流程
    计算机网络基础
  • 原文地址:https://www.cnblogs.com/qixidi/p/10229260.html
Copyright © 2011-2022 走看看