一、什么是numpy

  Numpy提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组(矩阵)的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。本身是由C语言开发,是个很基础的扩展,Python其余的科学计算扩展大部分都是以此为基础。

二、快速入门numpy库

  1.导入numpy(安装anaconda已带很多科学计算包,无需安装导入即可)

    

    导入画图工具matplotlib,用于数据分析与可视化

    

    打开一张猫的图片,发现计算机眼里,它只是一个数组,这样numpy也就上场了!:

    

  使用type就能发现,他是Numpy的ndarray,使用imshow()可以查看这只可爱的猫:

  

三、创建numpy.ndarray

  1.使用np.array,由python的list创建

    

    多维数组合理:

    

    通过shape查看是几行几列的:

    

    图片的分别为长宽加最后一维:颜色

    

  2.通过rountines函数创建ndarray

      ones:创建指定形状数组,数据元素使用1来填充

    

      使用imshow则可以显示这张图片了:

plt.imshow(n3)

      // zeros同理

    使用其他自定义数字,通过full创建:

    

  通过eye创建对角线矩阵:对角线为1,其他均为0(满秩)

    

  通过linspace创建有规律的数组:(默认取样数量num为50个)

    

    通过arange创建数组,在给定区间创建均匀间隔的值:(左闭右开)

    

    通过randint生成随机数组,例如0到100之间,生成5个数:

      

    通过randn生成一个标准正太分布的数组

    通过normal生成自定义的正太分布(其中loc参数表示拐点,scale表示波动性)

    通过random.random生成0-1左闭右开的随机数组

四、ndarray的基本操作

  1.索引

    和列表完全一致,使用下标取值

    

    多维同理,例如使用randint(0,100,(3,4))创建的3行四列数组,使用n1[0,1]取出第0行第1个

  2.切片

    一维数组与列表切片完全一致,多维同理

    

    多维数组和一维数组是同理的(比如3维数组可以看成元素是2维的1维数组),多维数组的切片,就是三维切哪些,二维切哪些,一维切哪些

    

   使用-1的步长表示反转:n1[::-1]

    3.变形

      使用reshape,传入tuple进行变形操作(多维数组传入负数直接变成一维数组:cat.reshape(-1))

    

    4.级联

     np.concatenate() ,参数是列表(可以传List或者tuple),纬度和形状必须相同,通过axis可以改变级联的方向

    

    使用axis改变级联方向

    

    图片同理:

    

    使用np.hstack与np.vstack进行纬度变更,分别是变成水平与垂直转换,来处理自己

    5.切分

      使用split切分,在索引位置切分,分成多个数组:

      

      

      使用vsplithsplit进行垂直于水平切分:

    6.副本

     需要注意的是所有赋值运算不会给ndarray创建副本,原对象的改变,也会改变ndarray的值(两个ndarray之间赋值,赋值的改变会影响被赋值的对象) ,要使用副本,使用copy:n2 = n1.copy()。否则直接 n2 = n1,n1会影响n2的值

五、ndarray的聚合操作

  可以直接调用ndarray的函数操作,例如求最大最小值:

    

  推荐使用np.max等操作,可以控制对某个轴(axis = 0时是Y轴)求最大值:

    

  其他几个max、min、sum等同理

    

NumPy:数学和统计方法

常用函数:

sum    求和
cumsum 求前缀和
mean 求平均数
std 求标准差
var 求方差
min 求最小值
max 求最大值
argmin 求最小值索引
argmax 求最大值索引

 六、ndarray的矩阵操作

  1.算数运算

    基础的加减乘除(通过基础的 + -等计算符号,或者通过np.add等进行操作)

    

  2.矩阵积dot

    必须是shape相反的,n行m列,乘以m行n列

    

    矩阵乘法原理如下:

    

七、ndarray广播机制

  1)  为缺失元素补1

  2)假定缺失元素用已有值补充

  https://www.cnblogs.com/jiaxin359/p/9021726.html

  例如,一个2行3列的数组与一行3列的数组进行相加,就会有广播机制:

  

 八、ndarray的排序

  1.快速排序

    np.sort():不改变输入

    ndarray.sort():本地处理,不占用空间,但改变输入

    

  2.部分排序

    只取最大的k个值或最小的k个值:np.partition(n,k):k为正时为最小的几个数,k为负时为最大的几个数(但这几个数并没有排序)

    参考:https://blog.csdn.net/qq_37007384/article/details/88668729

    

数据分析入门——numpy的更多相关文章

  1. 数据分析入门——numpy类库基础知识

    numpy类库是数据分析的利器,用于高性能的科学计算和数据分析.使用python进行数据分析,numpy这个类库是必须掌握的.numpy并没有提供强大的数据分析功能,而是它提供的ndarray数据结构 ...

  2. Python数据分析入门

    Python数据分析入门 最近,Analysis with Programming加入了Planet Python.作为该网站的首批特约博客,我这里来分享一下如何通过Python来开始数据分析.具体内 ...

  3. Python数据分析入门之pandas基础总结

    Pandas--"大熊猫"基础 Series Series: pandas的长枪(数据表中的一列或一行,观测向量,一维数组...) Series1 = pd.Series(np.r ...

  4. Python数据分析入门与实践 ✌✌

    Python数据分析入门与实践 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 这是一个数据驱动的时代,想要从事机器学习.人工智能.数据挖掘等前沿技术,都离不开 ...

  5. 利用Python进行数据分析(5) NumPy基础: ndarray索引和切片

    概念理解 索引即通过一个无符号整数值获取数组里的值. 切片即对数组里某个片段的描述. 一维数组 一维数组的索引 一维数组的索引和Python列表的功能类似: 一维数组的切片 一维数组的切片语法格式为a ...

  6. 数据分析 之 NumPy

    目录 简单了解数据分析 Python数据分析三剑客(Numpy,Pandas,Matplotlib) 简单使用np.array() 使用np的routines函数创建数组 ndarray N维数组对象 ...

  7. Python数据分析入门与实践

    Python数据分析入门与实践 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关 ...

  8. 数据分析01 /numpy模块

    数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...

  9. 数据分析之Numpy库入门

    1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列 ...

随机推荐

  1. P2680 运输计划[二分+LCA+树上差分]

    题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 ...

  2. redis cluster集群的原理

    redis集群的概述: 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有.有一些red ...

  3. LG4718 【模板】Pollard-Rho算法 和 [Cqoi2016]密钥破解

    Pollard-Rho算法 总结了各种卡常技巧的代码: #define int long long typedef __int128 LL; IN int fpow(int a,int b,int m ...

  4. Linux命令基础1-环境介绍

    1.linux的简单历史 1)先有unix,后来有linux 2)linux操作系统是开源和免费的,里面的软件可能部分要收费 3)linux有不同发行版本,redhat,centos等. 4)1991 ...

  5. 【CSP-S 2019】【洛谷P5658】括号树【dfs】【二分】

    题目: 题目链接:https://www.luogu.org/problem/P5658?contestId=24103 本题中合法括号串的定义如下: () 是合法括号串. 如果 A 是合法括号串,则 ...

  6. 模拟赛 怨灵退治 题解(Hall定理+线段树)

    题意: 有 n 群怨灵排成一排,燐每秒钟会选择一段区间,消灭至多 k 只怨灵. 如果怨灵数量不足 k,则会消灭尽量多的怨灵. 燐作为一只有特点的猫,它选择的区间是不会相互包含的.它想要知道它每秒最多能 ...

  7. 【转载】Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration info

    网上查到http://social.msdn.microsoft.com/Forums/vstudio/en-US/58271e39-beca-49ac-90f9-e116fa3dd3c0/mxed- ...

  8. COGS 1151 活动安排

    - 有 N 场活动,每场活动在特定的时间需要占用场地. - 如果有两场活动需要同一时间占用场地,则不能同时举行 - 问最多能举行多少场活动? 将所有活动按照结束时间从早到晚排序后贪心即可 具体思路看代 ...

  9. 洛谷P1514引水入城

    题目 搜索加贪心其实并不需要用到\(DP\),搜索也是比较简单地搜索. 对于每个第一行的城市进行类似于滑雪那道题的搜索,然后记录最后一行它所覆盖的区间,易得一个一行城市只会有一个区间.然后可以在最后进 ...

  10. Chrome教程(一)NetWork面板分析网络请求

    官方文档:https://developers.google.com/web/tools/chrome-devtools/network/ 1.如何打开 无论是在Windows还是Mac,都可以使用( ...