IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 数据清洗-Numpy基础 -> 正文阅读

[Python知识库]数据清洗-Numpy基础

数据清洗

介绍:进行数据清洗所使用的是python第三方库中的Numpy库

Numpy

导入Numpy包:

import numpy as np

Ndarray

Ndarray属性

1. ndarray.shape 返回一个包含数组维度的元组
2. ndarray.dtype 返回数组元素的类型
3. ndarray.ndim 返回数组的维度
4. ndarray.size 返回数组中包含元素的个数

创建Ndarray对象

创建矩阵的核心在于:要创建什么样的矩阵,矩阵中元素的类型时什么,矩阵是多大的

  1. 使用np.array函数:

    numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
    

    object:列表、元组等
    dtype:数据类型。如果未给出,则类型为被保存对象所需的最小类型
    copy:布尔来写,默认 True,表示复制对象
    order:顺序
    subok:布尔类型,表示子类是否被传递
    ndmin:生成的数组应具有的最小维数

    如果要创建一维数组则在object参数上增加一个[数组],创建二维的数组则在object上增加[数组1],数组[2],其输出结果带有两个[[]]表示二维数组,其中[]嵌套的个数代表数组的维度。

  2. 随机数生成

    使用np.random类中的方法创建:

    创建全是整数的矩阵:np.random.randint()

    np.random.randint(low、high、size);
    

    low:表示最小值 high:表示最大值 size=(行数,列数)

    创建元素从[0-1)服从正态分布的矩阵:np.random.rand()

    np.random.rand(d0,d1,d2……dn) 
    

    有几个参数表示几维数组,若只有两个参数d0,d1则行数为d0,列数为d1的矩阵

    创建自定义范围[x,y)服从正态分布的矩阵:np.random.uniform()

    np.random.uniform(low,high,d0,d1,d2……dn)
    

    low:表示可以取到的最低值 high:表示取不到的最高值

    创建取值服从标准正态分布的矩阵:np.random.randn()

    np.random.randn(d0,d1,d2……dn) 
    

    这里面的d0,di1,d2要用()括起来写入参数,用法与np.random.rand()类似

  3. 使用np.arrange () 创建数组

    np.range(start, stop[, step])
    

    取值范围:[start,stop) 步长为step表示间隔多少取一个元素

  4. 创建特殊数组

    全零数组:np.zero(shape, dtype=float, order=‘C’);

    全1数组:np.ones(shape, dtype=float, order=‘C’);

    全n数组:np.full(shape, fill_value, dtype=None, order=‘C’)

    shape决定维度,dtype决定元素类型,order决定行优先还是列优先

    fill_value决定矩阵元素是什么

    线性矩阵数组:

    np.inspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None);

    start 采样的起点; stop 采样的终点;默认的取值是[start,stop]

    num 采样的点个数,默认为50个,必须是非负数

    endpoint 决定是否包括端点stop,默认为true,即包括stop点

    单位矩阵数组:np.eye(N, M=None, k=0, dtype=<class ‘float’>, order=‘C’)

    N表示行数;M表示列数;当只有行数没有列数时表示一个方阵

    k表示对角线元素偏移的行数,正数向右上偏移,负数向左下偏移

    对角矩阵数组:np.diag(v,k=0)

    如果v是2D数组,返回k位置的对角线,如果v是1D数组,返回一个v作为k位置对角线的2维数组。

    k表示对角线元素偏移的行数,正数向右上偏移,负数向左下偏移

Numpy数组的向量化

定义:数组表达式替换显式循环的做法通常称为向量化

功能:可以通过直接对数组进行加减,乘除

Ndarray的各种变换操作

维度变换
  1. 使用reshape方法:

    reshpe(a,newshape,order=‘C’)
    

    a:输入的数组;newshape:新格式数组的形状;order决定行优先还是列优先

    对原来的数组使用reshape不会对原来的数组进行更改,如果需要保存则需要创建一个数组保存它

  2. 使用resize方法:

    resize(a,newshape,order=‘C’)
    

    a:输入的数组;newshape:新格式数组的形状;order决定行优先还是列优先

    对原来的数组使用resize则会直接修改原来的数组形状,而不需要设置新的变量捕捉

元素类型变换

使用astype函数:

astype(type类型)

对原数组使用astype后,如果要保留类型转变后的数组则需创造新的数组变量来捕捉

数组转变为列表

使用tolist函数:

tolist()

Numpy的广播功能

广播就是将数组向某一方向(横向,纵向)复制成某一形状,以解决数组间形状不同而不能够进行运算的问题

符合广播的情况:

  1. 如果运算双方都是数组且两个数组的形状不一样,一个数组向一个方向广播后可以得到另一个数组的形状,则广播可行
  2. 如果运算双方都是数组且两个数组的形状不一样,两个数组各自向两个方向广播,广播后的形状相同,则广播可行
  3. 如果运算的双方一个是标量(单个数值),则不受广播的方向的约束,可以向两个方向广播

在这里插入图片描述

访问Ndarray中的元素–索引和切片

基本索引和切片
索引:直接通过 [ ]进行存取
切片:取某几个间隔相同的元素的集合

说明:通过基本切片生成的所有数组始终是原始数组的视图,修改原始数组,视图也会发生变化

切片语法:Ndaray[start:stop:step]

三个参数都可以被省略,如果start被省略则从第0个位置开始切片,如果stop被省略,切片到最后一个位置,如果step被省略则默认步长为1

切片的范围为:[start,stop)

倒序切片时要注意步长与切片方向相同,从左到右为正,从右到左为负并且倒叙切片的时候可以将最右边的元素的位置置为-1,在最右边元素左侧的元素的位置都为负值,切片步长也为负值

倒序全切片:start,stop省略而把step置为-1即可倒序全切片

保存切片:在切片后使用,copy()函数进行深拷贝到另一个数组中去,拷贝的数组与原数组相互独立,互不影响

整数数组索引和切片

为了解决不连续,不规则的切片所引出的高级切片方法

语法规则:

arr[[元素所在数组中第0个轴上的位置],[元素所在数组中第1个轴上的位置].....]

说明:返回数组的副本,与原数组相互独立

高维数组的索引和切片

索引与C语言中的访问多维数组的元素的方式相同

切片要先确定要切的在第几维度,然后再在索引的相应维度进行切片即可,例如在二维数组中切片:

arr2[2][1:4]
bool索引

语法:arr[bool判断语句]

通过bool索引可以获得bool判断语句为1的元素的集合

Numpy运算

算术运算

算数运算函数:

np.exp(x)		计算e的x次方			np.log(a) 求自然对数
np.exp2(x)		计算2的x次方			np.mod(a,b) 求a%b
np.power(a,b)   计算a的b次方

取整函数与统计函数

取整函数
  1. 四舍五入,0.5取偶数

    np.around(a,k)
    

    k参数代表保留几位小数

  2. 向上取整与向下取整

    np.floor(a)		向上取整
    np.ceil(a)		向下1取整
    
统计函数

统计量:最大值,最小值,均值,中位数,标准差,方差

最大值:当k不取值时默认为全局最大值,取值后是按照轴间对应的值做对比取最大值

np.amax(a,axis=k)			//axis代表轴

最小值:当k不取值时默认为全局最小值,取值后是按照轴间对应的值做对比取最小值

np.amin(a,anix=k)

求和:当k不取值时默认为全局求和,取值后是按照轴上的每个元素求和

np.sum(a,anix=k)

求均值:当k不取值时默认为全局均值,取值后是按照轴求均值

np.mean(a,anix=k)

求方差:当k不取值时默认为全局方差,取值后是按照轴上求方差

np.var(a,anxi=k)

求标准差:当k不取值时默认为全局标准差,取值后是按照轴上求标准差

np.std(a,anxi=k)

求中位数:当k不取值时默认为全局中位数,取值后是按照轴求中位数

np.median(a,anxi=k)

排序和索引

排序:

numpy.sort(a, axis, kind, order)

a: 要排序的数组

axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序,默认是最内测的轴,在二维数组中:axis=0 按列排序,axis=1 按行排序

kind: 默认为’quicksort’(快速排序)

order: 如果数组包含字段,则是要排序的字段

索引:

寻找非零位置的索引:

np.nonzero(a)

返回非零的元素:

arr[np.nonzero(a)]

返回bool值为一的元素索引:

 np.where(condition, x, y)

满足condition则把x拿出,不满足condition则把y拿出来

归一化

作用:去重并排序

numpy.unique(arr, return_index, return_inverse, return_counts)

arr:输入数组,如果不是一维数组则会展开

return_index:如果为true,返回新列表元素在旧列表中的位置(下标),并以列表形式储

return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式储

return_counts:如果为true,返回去重数组中的元素在原数组中的出现次数

集合逻辑

数组符合集合逻辑:可以求交并补并判断元素是否在数组当中

判断元素是否在数组中:判断a是否在b中并返回一个列表,invert默认为Flase表示不反转结果,反之则反转结果

np.inid(a,b,invert)

求交集:求a和b的交集

np.intersect1d(a,b)

求并集:求a和b的并集

np.union1d(a,b)

求差集:求a和b的差集,在a而不在b中的元素

np.setdiff1d(a,b)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-22 22:58:57  更:2021-07-22 22:59:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 0:07:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码