Contents

Numpy是一个用python实现的科学计算包,主要提供矩阵运算的功能,而矩阵运算在机器学习领域应用非常广泛,Numpy一般与Scrapy、matplotlib一起使用。

Numpy用途

Numpy主要用作高性能计算和数据分析,其操作是围绕ndarray这么一个矩阵元素来进行。在数据分析的应用中,Numpy主要功能体现在:
1.用于数据清理和整理、子集构造和过滤、转换等快速的矢量化数组运算
2.常用的数组算法、如排序、化、集合运算等
3.统计和数据聚合运算
4.异构数据的合并/连接/转换

Numpy的安装

如果你环境没问题的话,pip install numpy即可,如果遇到问题,就到网上去下载wheel,用pip install .whl的方法进行安装。这里就不赘述了。

Numpy常用方法总结

创建矩阵


我们习惯把Numpy简写作np
对于多维对象,以此类推即可

获取矩阵行数列数(二维情况)

针对上面的代码,只需print(a2.shape),就会打印出一个元组(2,5)分别是2和5.

矩阵的截取

使用索引切片运算

我们以一个索引切片对二维数组进行操作的实际情况为例

在上面的例子中,切片运算是以[start:end]形式,也就是指定起始索引(包括)与结尾索引(不包括)来切出子字符串。
举个例子,在a[0:1]中,就是[start:end]中start等于0,end等于1的情况下,在这种情况下,就会显示数组a的第0行(包括)到第1行(不包括)的数据。先来就是[[1,2,3,4,5]]
再来看一个例子,在a[1,2:5]中,逗号前的1代表第一行(实际上是第二行,但是我习惯把真正的第一行称作第0行来对应它的数字),逗号后的2:5,就是第二列(包括)到第五列(不包括)的数字。还是那个问题,因为我习惯上把第一行称作第0行来对应实际上的第一行,因此这里的实际上是第三列(包括)到第六列(不包括),这个得看你们各自的习惯,只要理解了都是可以的。
切片索引的另一个形式就是[start:end:step],也就是切出起始索引与结尾索引(不包括)之间每次间隔step元素的内容(也就是省略step时,就相当于使用1).还是来看一个例子

a[1,2:5:2]的意思就是获取第一行的第二列(包括)到第五列(不包括)的数值,但是其中间隔为2,就是每次间隔为2后获取一下值。它的输出结果显然就是[8,10]了。
实际上了解索引意义的开发人员都知道索引其实就是相对第一个元素的便宜值。在python中,正索引就是指正偏移值,负索引就是负偏移值,-1索引就是倒数第一个元素,-2索引就是倒数第二个元素。
我们再来看一个例子

其中逗号前的1仍是指第一行,后面的依旧符合[start:end]的规则,从第四列(包括)到第二行(不包括),每次都相对于第一个元素偏移-1个单位,显然值就是[10,9]

按条件截取

按条件截取其实是在[]中传入自身的布尔语句
我们先来看一个最简单的例子
大专栏  numpy学习总结xjh.cn/http://zzulixjh.cn//2018/07/16/numpy/e.png"/>
那么它就会输出[7,8,9,10]
再来看一个满足一定条件的元素变成特定的值的例子

其实不二语句首先会生成一个布尔矩阵,将布尔矩阵传入[]实现截取
我们可以打印一下 a>6

矩阵的合并


其中hstack是将矩阵横向合并,vstack是将矩阵纵向合并

一些创建矩阵的函数

arange

我们可以通过arange来创建一些有规律的常用的矩阵
例如 a = np.arange(10)会创建一个从0开始到10(不包括10),步长为1的矩阵
[0,1,2,3,4,5,6,7,8,9]

linspace

linspace()用于创建指定数量等间隔的序列,实际产生一个等差数列。
例如 np.linspace(0,10,7)就是产生首位是0,末尾是10,含7个数的等差数列

logspace

logspace用于产生等比数列
例如np.logspace(0,4,5)就是产生首位是10的0次方,末尾是10的四次方的含5个数的等比数列。

矩阵的运算

常用矩阵函数

np.sin(a) 对矩阵a中每个元素取正弦,sin(x)
np.cos(a) 对矩阵a中每个元素取余弦,cos(x)
np.tan(a) 对矩阵a中每个元素取正切,tan(x)
np.arcsin(a) 对矩阵a中每个元素取反正弦,arcsin(x)
np.arccos(a) 对矩阵a中每个元素取反余弦,arccos(x)
np.arctan(a) 对矩阵a中每个元素取反正切,arctan(x)
np.exp(a) 对矩阵a中每个元素取指数函数,ex
np.sqrt(a) 对矩阵a中每个元素开根号√x
在使用这些矩阵时,只需将要进行运算的矩阵放入到()内即可,比如我要对矩阵a的元素进行sin()操作,只需np.sin(a)

矩阵乘法

矩阵乘法必须满足矩阵乘法的条件,即第一个矩阵的列数等于第二个矩阵的行数。
矩阵乘法的函数位dot

矩阵转置

如果需要将矩阵a进行转置,只需a.T即可

矩阵信息的获取

最大值最小值

获得矩阵中元素最大最小值的函数分别是max和min,可以获得整个矩阵、行或列的最大值最小值。对于矩阵a:
a.max() 整个矩阵的最大值
a.min() 整个矩阵的最小值
a.max(axis=0)获取每一行上的最大值
a.min(axis=0)获取每一行上的最小值
a.max(axis=1)获取每一列上的最大值
a.min(axis=1)获取每一列上的最小值

平均值

平均值的函数为mean(),其余方法和最大最小值差不多。

方差

方差的函数为var(),var()相当于mean(abs(x-x.mean())**2)
针对行列的方差参考最大值最小值

标准差

标准差的函数为std(),相当于sqrt(x.var())

求和

矩阵求和的函数是sum(),可以对行、列、整个矩阵求和

累计和

某位置累计和指的是该位置之前(包括该位置)所有元素的和
例如序列[1,2,3,4,5],其累计和为[1,3,6,19,15]

numpy学习总结的更多相关文章

  1. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  2. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  3. NumPy学习笔记 一

    NumPy学习笔记 一 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

  4. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  5. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  6. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  7. numpy 学习笔记

    numpy 学习笔记 导入 numpy 包 import numpy as np 声明 ndarray 的几种方法 方法一,从list中创建 l = [[1,2,3], [4,5,6], [7,8,9 ...

  8. numpy 学习总结

    numpy 学习总结 作者:csj更新时间:01.09 email:59888745@qq.com 说明:因内容较多,会不断更新 xxx学习总结: 回主目录:2017 年学习记录和总结 #生成数组/使 ...

  9. (转)Python数据分析之numpy学习

    原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...

  10. Numpy学习1

    NumPy学习(1) 参考资料: http://www.cnblogs.com/zhanghaohong/p/4854858.html http://linusp.github.io/2016/02/ ...

随机推荐

  1. Python执行JS -- PyExecJS库

    pip install PyExecJS 查看执行JS的环境 print(execjs.get().name) 返回值:JScript windows 默认执行JS的环境 返回值:Node.js (V ...

  2. 数据处理——One-Hot Encoding

    一.One-Hot Encoding     One-Hot编码,又称为一位有效编码,主要是采用位状态寄存器来对个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效.     在实 ...

  3. CodeForces 995B Suit and Tie(贪心,暴力)

    https://codeforces.com/problemset/problem/995/B 题意: 就是通过每次移动相邻的两位数,来使数值相同的数挨在一起,求最少要移动多少次. 思路: 直接从前往 ...

  4. Python——气象数据分析

    将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中 matplotlib 库的对数据进行图表化处理,然后调用 scikit-learn 库当中的的 SVM 库 ...

  5. 用Plotily处理数据的基本操作

    import pandas as pd # 导入数据.scv df = pd.read_csv(" .csv") # 查看前五行数据 df.head() # 查看一下数据描述 df ...

  6. 01 语言基础+高级:1-7 异常与多线程_day06 【线程、同步】

    day06 [线程.同步] 主要内容 线程 同步 线程状态 一.学习目标 1. 能够描述Java中多线程运行原理 2. 能够使用继承类的方式创建多线程 3. 能够使用实现接口的方式创建多线程 4. 能 ...

  7. 关于前端JS的总结

    简介 JavaScript是一种计算机编程语言,可以像等其他编程语言那样定义变量,执行循环等.主要执行在浏览器上,为HTML页面提供动态效果,而且JavaScript是一种脚本语言,它的代码是解释执行 ...

  8. Python程序在docker中运行,未找到自定义模块

    错误 Traceback (most recent call last): File "demo.py", line 13, in <module> from test ...

  9. iOS 一种很方便的构造TarBar

    直接在TarBarController中操作,代码如下: #import "DLTabBarController.h" #import "ViewController.h ...

  10. mybatis处理LIKE模糊查询字符串拼接

    -- 最佳实践 <select id="getSealByMap" parameterType="map" resultType="map&qu ...