日常学习中总是遇到数据需要处理等问题,这时候我们就可以借助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

机器学习中的numpy库的更多相关文章

  1. 机器学习三剑客之Numpy库基本操作

    NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...

  2. Python中的numpy库介绍!

    转自:https://blog.csdn.net/codedz/article/details/82869370 机器学习算法中大部分都是调用Numpy库来完成基础数值计算的.安装方法: pip3 i ...

  3. 机器学习 Numpy库入门

    2017-06-28 13:56:25 Numpy 提供了一个强大的N维数组对象ndarray,提供了线性代数,傅里叶变换和随机数生成等的基本功能,可以说Numpy是Scipy,Pandas等科学计算 ...

  4. numpy库中数组的数据类型

    numpy库中数组的数据类型 dtype是一个特殊的对象,它含有ndarray将一块内存解释为特殊数据类型所需要的信息 指定数据类型创建数组 >>> import numpy as ...

  5. python中numpy库的一些使用

    想不用第三方库实现点深度学习的基础部分,发现numpy真的好难(笑),在此做点遇到的函数的笔记 惯例官方文档:https://docs.scipy.org/doc/numpy-1.16.1/refer ...

  6. python中numpy库ndarray多维数组的的运算:np.abs(x)、np.sqrt(x)、np.modf(x)等

    numpy库提供非常便捷的数组运算,方便数据的处理. 1.数组与标量之间可直接进行运算 In [45]: aOut[45]:array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ ...

  7. 简单记录numpy库的某些基本功能

    这里介绍python的一个库,numpy库,这个库是机器学习,数据分析最经常用到的库之一,也是利用python做数据必须用到的一个库,入门机器学习学的第一个python库就是它了. 先对其导入到pyt ...

  8. Numpy库的学习(一)

    今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直 ...

  9. NumPy库实现矩阵计算

    随着机器学习技术越来越向着整个社会进行推广,因此学好线性代数和Python当中的numpy库就相当重要了.我们应该知道numpy库的使用是sklearn库和opencv库的基础.主要用于矩阵的计算.当 ...

随机推荐

  1. java小数位-DecimalFormat(转)

    转载:http://blog.sina.com.cn/s/blog_93daad410101159s.html java格式化数字DecimalFormat 在输出数字时,有时需要给数字配上单位,有时 ...

  2. Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0下面)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40411921.本文出自:[张鸿洋的博客] 1.概述 之前写过一篇博文:Andro ...

  3. 搭建一个简单的基于web的网络流量监控可视化系统

    本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...

  4. ionicframework I ------------- 初体验

    ionicframework I -------------  初体验 Create hybrid mobile apps with the web technologies you love. Fr ...

  5. textarea 换行

    这个是可以多行展示的Texat也就是DW设计模式下的多行 /*华丽的分割线==================================*/ 当你点击单行时你发现此时的标签换成了value=&q ...

  6. FFMPEG推流到RTMP服务器命令 - weixin_37897683的博客 - CSDN博客 https://blog.csdn.net/weixin_37897683/article/details/81225228

    FFMPEG推流到RTMP服务器命令 - weixin_37897683的博客 - CSDN博客 https://blog.csdn.net/weixin_37897683/article/detai ...

  7. CNI bridge 插件实现代码分析

    对于每个CNI 插件在执行函数cmdAdd之前的操作是完全一样的,即从环境变量和标准输入内读取配置.这在http://www.cnblogs.com/YaoDD/p/6410725.html这篇博文里 ...

  8. 【我的Android进阶之旅】推荐一款能提升数十倍效率的Android应用开发助手

    一功能介绍 a调试相关 1布局边界 2布局更新 3强制GPU渲染 4GPU渲染 5指针位置 6严格模式 7不保留应用 8不锁定屏幕 9开发者选项 10系统设置 11语言设置 12USB调试 b UI相 ...

  9. Linux下套接字具体解释(九)---poll模式下的IO多路复用server

    參照 poll调用深入解析-从poll的实现来讲poll多路复用模型,非常有深度 poll多路复用 poll的机制与select相似,与select在本质上没有多大差别.管理多个描写叙述符也是进行轮询 ...

  10. Python面向对象高级编程-_slots_

    使用_slots_ 正常情况下,当定义一个class,创建一个class的实例后,可以给实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: >>> class Stu ...