首页 > 其他分享 >NumPy数据处理基础

NumPy数据处理基础

时间:2024-01-22 18:33:40浏览次数:25  
标签:arr 函数 创建 基础 数组 numpy 数据处理 NumPy

Panadas数据处理基础

一、数据结构

NumPy中主要有多维数组和矩阵结构。

1.1、利用array()函数创建数组

numpy.array(object , dtype=None,*,copy=True,order='K',subok=False,ndmin=0,like=None)
----object参数来创建数组类型的对象
----dtype参数表示数组元素的类型
----copy用布尔值表示创建的数组是否复制object对象中的元素

1.2、访问数组对象属性

创建数组后,我们可以通过以下属性访问数组的值。
  • ndim:表示数组维度
  • shape:表示数组各维度大小的形状元组
  • size:表示数组元素的总个数
  • dtype表示元素的数据类型

1.3、数组对象的类型

1、创建指定类型的数组对象

前面已经知道了dtype可以指定数据类型的数组对象,但是在Panadas数据中和python中的数据类型并不同。

以下是可以指定的参数:

dict_keys(['?', 0, 'byte', 'b', 1, 'ubyte', 'B', 2, 'short', 'h', 3, 'ushort', 'H', 4, 'i', 5, 'uint', 'I', 6, 'intp', 'p', 9, 'uintp', 'P', 10, 'long', 'l', 7, 'ulong', 'L', 8, 'longlong', 'q', 'ulonglong', 'Q', 'half', 'e', 23, 'f', 11, 'double', 'd', 12, 'longdouble', 'g', 13, 'cfloat', 'F', 14, 'cdouble', 'D', 15, 'clongdouble', 'G', 16, 'O', 17, 'S', 18, 'unicode', 'U', 19, 'void', 'V', 20, 'M', 21, 'm', 22, 'b1', 'bool8', 'i8', 'int64', 'u8', 'uint64', 'f2', 'float16', 'f4', 'float32', 'f8', 'float64', 'c8', 'complex64', 'c16', 'complex128', 'object0', 'bytes0', 'str0', 'void0', 'M8', 'datetime64', 'm8', 'timedelta64', 'int32', 'i4', 'uint32', 'u4', 'int16', 'i2', 'uint16', 'u2', 'int8', 'i1', 'uint8', 'u1', 'complex_', 'single', 'csingle', 'singlecomplex', 'float_', 'intc', 'uintc', 'int_', 'longfloat', 'clongfloat', 'longcomplex', 'bool_', 'bytes_', 'string_', 'str_', 'unicode_', 'object_', 'int', 'float', 'complex', 'bool', 'object', 'str', 'bytes', 'a', 'int0', 'uint0'])
常用的类型有bool、int、float等后面加数字或下划线,其中数据类型后面加数字表示二进制的位数。

2、转换数组的数据类型

通过数组的astype()方法转换数组的数据类型,得到新的数组,原数组保持不变。

1.4、创建常用数组

1、利用zeros和ones创建指定形状的全0或全1数组

2、利用eye或identity创建单位阵

3、创建等差数组

NumPy中的arange()函数用于创建等差数组对象。

4、创建等比数组

NumPy.logspace()函数用于创建等比数组对象。

5、从字符串创建数组

NumPy.fromstring()函数用于创建字符串数组。

6、根据函数创建数组

NumPy.fromfunction()函数创建数组对象。

import numpy as np
#创建二维数组
li = [[1,2,3,4],[5,6,7,8]]
arr = np.array(li)
print(arr)
#获取数组维度
print(arr.ndim)
#获取各维度大小
print(arr.shape)
#获取元素个数
print(arr.size)
#获取元素数据类型
print(arr.dtype)
#转换数据类型
arr = arr.astype(np.float64)
print(arr)
#创建单位阵
print(np.eye(4))
#根据函数创建数组
fun = np.fromfunction(lambda x,y:x*2+y,(3,4))
print(fun)
[[1 2 3 4]
 [5 6 7 8]]
2
(2, 4)
8
int32
[[1. 2. 3. 4.]
 [5. 6. 7. 8.]]
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]
[[0. 1. 2. 3.]
 [2. 3. 4. 5.]
 [4. 5. 6. 7.]]

二、数据准备

2.1、随机数的生成

1、使用numpy.random.rand()函数生成[0,1)的随机浮点数

2、使用numpy.random.randn()生成一个具有标准正态分布的随机浮点数样本

3、使用numpy.random.randint()函数生成随机整数

4、使用numpy.random.uniform()生成一个均匀分布的随机采样

5、使用numpy.random.choice()从数组中随机抽取元素

以上所产生的随机值,都是由电脑的当前时间作为随机数种子。

可以通过如下三种方式来设置随机数发生器的种子值:

  • numpy.random.seed()函数设置种子值。但是如果设置的是一样的,那么每一次获得的值也不会变。
  • numpy.random.RandomState类设置种子值。
  • numpy.random.default_rng()函数设置种子值。

2.2、NumPy数组在文本文件中存取

1、将数组写入txt文件或csv文件

可以使用numpy.savetxt将数组保存到以txt为扩展名的文本文件中或以csv为扩展名的文本文件中。

numpy.savetxt(fname,X,fmt='% .18e',deliniter='',newline='\n',header='',footer='',comments='#',encoding=None)
fname--保存文件名
X--一维或二维数据
fmt--输出数据的格式字符串或格式字符串序列
delimiter--分隔列数据的字符串
newline--分隔行的字符串
header--将在文件开头写入的字符串
footer--将在文件尾写入的字符串
comments--注释字符串,放在header或footer字符串前面表示注释

2、从文件中读取数据构成数组

可以利用numpy.loadtxt从文件中读取数据,返回数组。

三、常用数组运算与函数

3.1数组的索引

1、一维数组索引操作

通过数组名【索引号】提取元素,还可以直接修改

2、二维数组索引操作

通过数组名【i,j】或数组名【i】【j】的方式获取,同样可以直接修改。

3.2、数组的切片

数组切片是选取原数组指定位置上的元素构成一个数组。数组切片是原始数据的视图,数据并不会被复制,即视图上的任何修改都会直接体现到原数组或基于同一个原数组的切片上。

3.3、改变数组的形状

1、reshape()方法生成指定形状的数组视图,会产生新的数组

2、resize()方法直接修改原数组的形状,直接在原数组上修改

3、通过设置数组的shape属性值直接修改原数组的形状

3.4、数组对角线上替换新元素值

用NumPy中的fill_diagnoal()函数可以替换任意维数的给定数组主对角线上的元素值。

3.5、用numpy.newaxis或None插入一个维度

3.6、数组的基本运算

3.7、数组的排序

3.8、数组的组合

3.9、数组的分割

3.10、随机打乱数组中的元素顺序

3.11、多维数组的展开

3.12、其他常用函数与对象

四、使用NumPy进行简单统计分析

1、数组在无格式二进制文件中存取

使用数组的tofile()方法可以将数组中的数据以二进制的格式写进文件。

2、数组在npy文件中的存取

numpy.save()函数可以保存任意维度的NumPy数组到一个扩展名为npy的二进制文件中。

3、数组在npz文件中存取

numpy.savez()函数可以一次性将多个数组保存在同一个扩展名为npz的二进制文件中。

4、数组在hdf5文件中存取

利用hdf5格式的文件存储数组,也可以同时存储数组的形状和元素类型。

标签:arr,函数,创建,基础,数组,numpy,数据处理,NumPy
From: https://www.cnblogs.com/wjx-2005-07-01/p/17980715

相关文章

  • 测试开发技术:Python测试框架Pytest的基础入门
    测试开发技术:Python测试框架Pytest的基础入门  Pytest简介Pytestisamaturefull-featuredPythontestingtoolthathelpsyouwritebetterprograms.Thepytestframeworkmakesiteasytowritesmalltests,yetscalestosupportcomplexfunctionaltesting......
  • 国产的AI基础设施与国外的差距?仅以grpc与prpc做比较
    搞AI,基础设施包括软件、硬件以及相关生态,多方面,这里只片面的取一个例子来说明国内外在AI基础设施上的区别,注意,这里只是片面截取。高性能的rpc框架是搞AI的一个基础依赖软件,当然,国外也有与之可以替代的mpi框架,不过这两个都是老美的。对于mpi,老美一直是开源的,国内也没有任何一家企......
  • Linux基础45 firewalld防火墙, 参数, 区域配置, 放行策略, 端口转发, 富规则, 防火墙
    firewalld防火墙一、防火墙安全概述在Centos7系统中继承了多款防火墙管理工具,默认启动的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及(图形)的两种管理方式。对于接触Linux较早的人员对Iptables比较熟悉,但由于Iptables的规则比较的麻烦,并且对网络有......
  • 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景
    区别1、测试计划和测试用例编制的先后顺序:从V模型来讲,在需求阶段就要制定系统测试计划和测试用例,概要设计的时候做集成测试计划和测试用例,有些公司的具体实践不一样,但是顺序肯定是先做系统测试计划和测试用例,再做集成测试计划和测试用例。2、测试用例的粒度:系统测试用例相对很接......
  • 软件测试基础知识 + 面试理论(超详细)
     一、什么是软件?软件是计算机系统中的程序和相关文件或文档的总称。二、什么是软件测试?说法一:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。说法二:软件测试就是利用一定的方法对软件的质量或者使用性进行......
  • Java基础复习之选择结构使用思路
    Java基础复习之选择结构使用思路目录目录Java基础复习之选择结构使用思路目录一、Java提供的三种选择结构二、三种选择结构的使用结构(一)关于if...else的三种使用结构(二)三元运算符(三)关于switch...case的两种使用结构三、选择结构使用思路一、Java提供的三种选择结构if、......
  • 聚类算法笔记【零基础数模系列】
    聚类算法前言作为数模小白,看了很多讲解新概念新模型的文章,这些文章往往要么讲的很浅不讲原理只讲应用,让人知其然不知其所以然。要么讲的很深小白看不懂,同时总是忽略关键部分,经常性引入陌生概念让初学者疑惑,因此有了本文,任何能熟练掌握线性代数知识且逻辑思维能力尚可的人都可以......
  • Git必知必会基础(08):分支合并
    补充切换分支前一定要先将当前分支内容add、commit到本地仓库然后fetch远程仓库分支合并,有冲突就解决冲突(因为可能别人push了),然后push另外,也可能你push前和pull后这段时间别人又push了,这样就需要再次fetch合并 命令 命令作用备注git merge分支名表示用指定分支和当前分支进行合......
  • Git必知必会基础(11):撤销操作(含reset)
     数据准备 说明:下面对file的操作,都可以用通配符gitadd<file>...比如:gitadd*.txt gitrestore<file>...比如:gitrestore--staged*.txt 修改文件(已提交过,文件已在本地仓库中)撤销:对工作区修改修改文件内容,可以看到master->origin的颜色变了 此时文件在工作区,根据上图提......
  • Git必知必会基础(06):分支创建、切换、更新、删除、拉取(fetch)
     简介分支就是版本上的更新送代,默认只有master主分支可以从主分支上分离出其他的分支,各分支间互不干扰每个项目,一般有多个分支,比如master(主干分支)、开发分支、测试分支、生产bug分支等等线上环境,一个项目也可能会有多个稳定分支同时在线上运行但是,分支越多,后期合并分支的成本越大,......