数据分析之numpy模块
numpy(numerical python)是python语言的一个扩展程序库,支持大量的维度数组和矩阵运算,此外也针对数组提供大量的数学函数库。
一、创建数组
1 使用array()创建
import numpy as np
a = np.array([1,2,3,4,5]) #这是一个一维数组
a1 = np.array([[1,4,3],[4,5,6],[7,8,9.5]]) #这是一个二维数组
numpy默认数组的所有元素的类型是相同的,如果传进来的列表包含不同的类型,则自动统一为同一类型,优先级:str>float>int,如图:
2 使用np的routines函数创建
2.1 np.ones(shape,dtype=None,order='C')
2.2 np.zeros(shape,stype=None,order='C') 这和ones用法一样,只是得到的每个元素为0
2.3 np.full(shape,fill_value,dtype=None,order='C') 这也一样,但只是多了一个fill_value参数,让我们可以指定填充的值
2.4 np.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)
2.5 np.arange(start,stop,step,dtype=None)
2.6 np.random.rantdint(low,high=None,size=None,dtype='I')
2.7 np.random.random(size=None) 得到0到1的随机数,左闭右开
2.8 np.random.randn(d0,d1,,,,) 标准正太分布
二、数组的属性
shape:形状 ndim:维度 size:长度 dtype:元素类型,以后在参数中,shape和size用法一样
三、索引和切片
1,索引
一维索引和列表一样,多维的就用逗号隔开,分别表示行和列,或者更多。如果是二维的,逗号前面表示行,逗号后面表示列。
但如果要取第一行,就不用写逗号,直接在中括号里写上索引就行,取第一行和第三行,就在中括号里放一个中括号,在里面的中括号里放1和3。
arry1[1] arry1[[1,3]]
如果要取第一列,就在逗号前面写冒号,逗号后面写索引,取多列时,就把逗号后面写上中括号,再在中括号里写索引
arry1[:,1] arry1[:,[2,3]]
如果要取多行多列,可以这样写:
arry1[[2,3],[2,3]]
2,切片
一维切片和列表一样,多维切片就和多维索引差不多,也是用逗号隔开
这是切的第1至2行的第1至2列
还可以将数据倒置,用'::-1'
arry1[::-1] 将行倒置
arry1[:,::-1] 将列倒置
arry1[::-1,::-1] 将行和列都倒置
四、变形
使用reshape()函数,参数是一个元祖,可以把一个数组的维度进行切换。arry1是一个5*5的二维数组,arry2=arry1.reshape((25))就变成了一个一维的数组,然后再通过arry2.reshape((5,5))又变成一个二维数组了,但整个变形过程中必须保证size是能对上的
五、图片倒置
我们要用到matplotlib.pyplot模块,它可以帮我们把图片转换成数组,然后把数组用图片展示出来;还要用到数据倒置的方法。
六、级联(np.concatedate())
concatenate()axis=0 纵轴 axis=1 横轴
当纵轴级联时,两个数组的列必须相同,当横轴级联时,两个数组的行必须相同
维度必须相同
利用级联我们就可以做九宫格图片:
级联还有两种方法:
np.hstack() axis=1,只能纵向
np.vstack() axis=0,只能横向
七、切分
np.split() 第一个参数为数组,第二个参数为切分点,为元祖,第三个参数是切分方向
np.vsplit()
np.hsplit()
切分图片,就上面的猫的图片:
八、副本
在第数组进行赋值操作时,就会改变数组的值,但我们又不希望改变原数组的值(因为后面还会用到原数组),此时我们就需要复制一个原数组的数据,然后对复制的数组进行赋值操作。
九、聚合操作
Function Name NaN-safe Version Description
np.sum np.nansum Compute sum of elements 求和
np.prod np.nanprod Compute product of elements
np.mean np.nanmean Compute mean of elements 求平均值
np.std np.nanstd Compute standard deviation
np.var np.nanvar Compute variance
np.min np.nanmin Find minimum value
np.max np.nanmax Find maximum value
np.argmin np.nanargmin Find index of minimum value
np.argmax np.nanargmax Find index of maximum value
np.median np.nanmedian Compute median of elements
np.percentile np.nanpercentile Compute rank-based statistics of elements
np.any N/A Evaluate whether any elements are true
np.all N/A Evaluate whether all elements are true
np.power 幂运算
如求和操作:
十、广播机制
重要】ndarray广播机制的三条规则:缺失维度的数组将维度补充为进行运算的数组的维度。缺失的数组元素使用已有元素进行补充。
规则一:为缺失的维度补1(进行运算的两个数组之间的维度只能相差一个维度)
规则二:缺失元素用已有值填充
规则三:缺失维度的数组只能有一行或者一列
十一、快速排序
np.sort()与ndarray.sort()都可以,但有区别:
np.sort()不改变输入
ndarray.sort()本地处理,不占用空间,但改变输入
数据分析之numpy模块的更多相关文章
- 数据分析01 /numpy模块
数据分析01 /数据分析之numpy模块 目录 数据分析01 /数据分析之numpy模块 1. numpy简介 2. numpy的创建 3. numpy的方法 4. numpy的常用属性 5. num ...
- 【Python 数据分析】Numpy模块
Numpy模块可以高效的处理数据,提供数组支持.很多模块都依赖他,比如:pandas.scipy.matplotlib 安装Numpy 首先到网站:https://www.lfd.uci.edu/~g ...
- 2 数据分析之Numpy模块(1)
Numpy Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包.它是我们课程所介绍的其他高级工具的构建基础. 其部分功能如下: ndarray, 一个具有复杂广播能 ...
- 3 数据分析之Numpy模块(2)
数组函数 通用元素级数组函数通用函数(即ufunc)是一种对ndarray中的数据执行元素级的运算.我们可以将其看做是简单的函数(接收一个或多个参数,返回一个或者多个返回值). 常用一元ufunc: ...
- Python数据分析之numpy学习
Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有 ...
- (转)Python数据分析之numpy学习
原文:https://www.cnblogs.com/nxld/p/6058572.html https://morvanzhou.github.io/tutorials/data-manipulat ...
- 开发技术--Numpy模块
开发|Numpy模块 Numpy模块是数据分析基础包,所以还是很重要的,耐心去体会Numpy这个工具可以做什么,我将从源码与 地产呢个实现方式说起,祝大家阅读愉快! Numpy模块提供了两个重要对象: ...
- numpy模块常用函数解析
https://blog.csdn.net/lm_is_dc/article/details/81098805 numpy模块以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter note ...
- numpy模块、matplotlib模块、pandas模块
目录 1. numpy模块 2. matplotlib模块 3. pandas模块 1. numpy模块 numpy模块的作用 用来做数据分析,对numpy数组(既有行又有列)--矩阵进行科学计算 实 ...
随机推荐
- 关于loadtxt编码问题的解决方法
I am trying to load data with numpy.loadtxt... The file im trying to read is using cp1252 coding. Is ...
- websocket的简单使用
一 轮询 什么是轮询:设置每一段时间去访问一次服务器,然后服务器返回最新的数据.这样服务器的压力会非常的大,并且还会有延迟.适用于小型程序. 实现:再客户端的页面设置一个定时发送请求的任务,每个这段时 ...
- Unittest中TestCase类中定义的几个特殊方法
1.setUp():每个测试方法运行前运行,测试前的初始化工作: 2.tearDown():每个测试方法运行结束后运行,测试后的清理工作: 3.setUpClass():所有的测试方法运行前运行,单元 ...
- HashMap TreeMap的区别
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复就覆盖了),但允许值重复.Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快 ...
- 通过HPS控制FPGA的GPIO
1.学习目的 本例程主要是让 SoC FPGA 初学者了解 HPS/ARM 如何跟 FPGA 交互.“My First HPS-FPGA”工程演示了实现方法的细节.这个工程包括 Quartus II ...
- 当noncopyable遇见singleton
在实现单例类时,通常要把构造相关的几个函数访问权限设为private或protected(最好是private).但假设一个大型系统中,有数十个单例类(这很正常,单例类其实是外观模式的一种最常用设计) ...
- Redis集群环境使用的是redis4.0.x的版本,在用java客户端jedisCluster启动集群做数据处理时报java.lang.NumberFormatException: For input string: "7003@17003"问题解决
java.lang.NumberFormatException: For input string: "7003@17003" at java.lang.NumberFormatE ...
- AndroidStudio制作个人资料界面模块以及SQLite数据库的使用
前言 大家好,给大家带来AndroidStudio制作个人资料界面模块以及SQLite数据库的使用的概述,希望你们喜欢 学习目标 掌握SQLite数据库的使用,能够实现用数据库来保存用户的信息: 学会 ...
- 机器学习技法笔记:04 Soft-Margin Support Vector Machine
Roadmap Motivation and Primal Problem Dual Problem Messages behind Soft-Margin SVM Model Selection S ...
- vue 自学笔记(七) 组件细节问题
前情提要: 这里盘点一下,组件细节的问题 现在我们观察一些用框架开发的网页BiliBili.掘金,会发现很多部分都十分相似或者一模一样,我们甚至可以将其拆分归类.而事实上,页面的确是被一个个组件构成的 ...