python数据分析基础之numpy库详解(代码片段)

温柔且上进c 温柔且上进c     2022-12-06     338

关键词:

Numpy库基础

安装numpy库

  • 直接安装:
pip install numpy
  • 换源安装
pip install numpy -i https://pypi.douban.com/simple
  • 或者使用python集成环境anaconda进行安装

numpy介绍

  • NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和 随机数生成等功能

Numpy数组对象

numpy中主要操作的对象就是多维数组(ndarray),该数组由两部分组成:

  • 实际的数据
  • 描述这些数据的元数据

而大部分的数组操作仅仅修改元数据部分,而不是修改底层的实际数据

NumPy中的数组一般是同质的(但有一种特殊的数组类型例外,它是异质的),即数组中的所有元素类型必须是一致的。这样有一个好处:如果我们知道数组中的元素均为同一类型,该数组所需的存储空间就很容易确定下来

  • 与Python中一样,NumPy数组的下标也是从0开始的。数组元素的数据类型用专门的对象表示

  • 我们使用numpy中的arange函数创建数组,并获取其数据类型

import numpy as np
one_arr=np.arange(5)
one_arr.dtype

  • 数组one_arr的数据类型为int32(在我的机器上是这样),当然如果你使用64位的Python,得到的结果可能是int64。不论是哪种情形,该数组的数据类型都是整数(64位或32位)。除了数据类型,数组的维度也是重要的属性

上述例子演示了怎样创建一个向量(即一维的NumPy数组)。向量在数学中很常用,但
大部分情况下,我们需要更高维的对象。先来确定一下刚刚所创建向量的维度:

one_arr.shape

  • 上图所示:这是一个包含5个元素的向量,取值分别为0~4的整数。数组的shape属性返回一个元组(tuple),元组中的元素即为NumPy数组每一个维度上的大小。上面例子中的数组 是一维的,因此元组中只有一个元素

创建多维数组

我们已经知道如何创建向量,现在可以试着创建多维的NumPy数组,并查看其维度

  • 创建多维数组
two_arr=np.array([np.arange(2),np.arange(2)])
two_arr

  • 查看其维度
two_arr.shape

  • 在上面,我们将arange函数创建的数组作为列表元素,把这个列表作为参数传给array函数,从而创建了一个2×2的数组,而且没有出现任何报错信息

  • array函数可以依据给定的对象生成数组。给定的对象应是类数组,如Python中的列表。在上面的例子中,我们传给array函数的对象是一个NumPy数组的列表。像这样的类数组对象是array函数的唯一必要参数,其余的诸多参数均为有默认值的可选参数

获取数组中的元素

  • 在这里我们就使用上面创建的two_arr二维数组进行演示

  • 在创建这个多维数组时,我们给array函数传递的对象是一个嵌套的列表。现在来依次选取该数组中的元素。记住,数组的下标是从0开始的

a=two_arr[0,0]
a

  • 上述就是从数组中或取元素。对于数组two_arr来说,只需要用two_arr[m,n]选取各数组元素,其 中m和n为元素下标,对应的位置如下表所示:

Numpy数据类型

  • Python支持的数据类型有整型、浮点型以及复数型,但这些类型不足以满足科学计算的需求,因此NumPy添加了很多其他的数据类型。在实际应用中,我们需要不同精度的数据类型,它们占用的内存空间也是不同的。在NumPy中,大部分数据类型名是以数字结尾的,这个数字表示其在内存中占用的位数

  • 如下图所示

类型描述
bool用一位存储的布尔类型(值为TRUE或FALSE)
inti由所在平台决定其精度的整数(一般为int32或int64)
int8整数,范围为-128至127
int46整数,范围为-32768至32767
int32整数,范围为-231至231-1
int64整数,范围为-263至263-1
uint8无符号整数,范围为0至255
uint16无符号整数,范围为0至65535
uint32无符号整数,范围为0至232-1
uint64无符号整数,范围为0至264-1
float16半精度浮点数(16位):其中用1位表示正负号,5位表示指数,10位表示尾数
float32半精度浮点数(32位):其中用1位表示正负号,8位表示指数,23位表示尾数
float64或float半精度浮点数(64位):其中用1位表示正负号,11位表示指数,52位表示尾数
complex64复数,分别用两个32位浮点数表示实部和虚部
complex128或complex64复数,分别用两个64位浮点数表示实部和虚部
  • 每一个数据类型均有对应的类型转换函数:
  • 上述即为一部分numpy的数据类型转换函数
  • 在NumPy中,许多函数的参数中是可以指定数据类型,通常这个参数是可选的:
arr=np.arange(7,dtype=np.uint16)

  • 需要注意的是,复数是不能转换为整数的,这将触发TypeError错误:
  • 同样,复数也不能转换为浮点数。不过,浮点数却可以转换为复数,注意,有j的部分为复数的虚部

数据类型对象

  • 数据类型对象是numpy.dtype类的实例。如上所述,NumPy数组是有数据类型的,更确切 地说,NumPy数组中的每一个元素均为相同的数据类型。数据类型对象可以给出单个数组元素在内存中占用的字节数,即dtype类的itemsize属性
two_arr.dtype.itemsize
two_arr.dtype

Numpy字符编码

  • NumPy可以使用字符编码来表示数据类型,这是为了兼容NumPy的前身Numeric。不推荐使用字符编码,但有时会用到,因此在下面还是列出了字符编码的对应表。我们在使用Numpy时应该优先使用dtype对象来表示数据类型,而不是这些字符编码
数据类型字符编码
整数i
无符号整数u
单精度浮点数f
双精度浮点数d
布尔值b
复数D
字符串S
unicode字符串U
void (空)V
  • 下面使用字符编码出创建numpy数组:
  • 创建一个单精度浮点数数组:
a=np.arange(7,dtype='f')

  • 也可创建一个复数数组
a=np.arange(7,dtype='D')

自定义数据类型

有很多种自定义数据类型的方法,以浮点型为例:

  • 可以使用Python中的浮点数类型:
np.dtype(float)

  • 可以使用字符编码来指定单精度浮点数类型:
np.dtype('f')

  • 可以使用字符编码来指定双精度浮点数类型:
np.dtype('d')

  • 还可以将两个字符作为参数传给数据类型的构造函数。此时,第一个字符表示数据类型, 第二个字符表示该类型在内存中占用的字节数(2、4、8分别代表精度为16、32、64位的浮点数):
np.dtype('f8')

  • 完整的Numpy数据类型列表可以在sctypeDict.keys()中找到:
np.sctypeDict.keys()

dtype类的属性

  • dtype类有很多有用的属性。例如,我们可以获取数据类型的字符编码:
a=np.dtype('f8')
a.char

  • type属性对应于数组元素的数据类型:
a.type

  • str属性可以给出数据类型的字符串表示,该字符串的首个字符表示字节(endianness), 后面如果还有字符的话,将是一个字符编码,接着一个数字表示每个数组元素存储所需的字节数。 这里,字节序是指位长为32或64的字(word)存储的顺序,包括大端(bigendian)和小端序 (little-endian)。大端序是将最高位字节存储在最低的内存地址处,用>表示;与之相反,小端序 是将最低位字节存储在最低的内存地址处,用<表示:
a.str

创建自定义数据类型

  • 自定义数据类型是一种异构数据类型,可以当做用来记录电子表格或数据库中一行数据的结构。作为示例,我们将创建一个学生信息的数据类型。其中,我们用一个长度40个字 符的字符串来记录学生名称,用一个32位的整数来记录学生的年龄,最后用个32位的单精 度浮点数来记录学生的身高 。下面是具体的步骤:
  • 创建数据类型:
t = np.dtype([('name', np.str_, 40), ('age', np.int32), ('height',np.float32)])
t

  • 查看数据类型(也可以查看某一字段的数据类型) :
t['age']

  • 在用array函数创建数组时,如果没有在参数中指定数据类型,将默认为浮点数类型。而现在,我们想要创建自定义数据类型的数组,就必须在参数中指定数据类型,否则将触发TypeError错误:
student=np.array([('ycx',18,165.6),('fbl',22,188.8)],dtype=t)
student[1]

python数据分析基础之numpy库详解(代码片段)

...创建,数据类型)需要回顾的可以查看:python数据分析基础之Numpy库详解(一)一维数组的索引与切片一维数组的切片操作与Python列表的切片操作很相似。例如,我们可以用下标2~6来选取元素2,3,4... 查看详情

python数据分析基础之numpy库详解(代码片段)

...创建,数据类型)需要回顾的可以查看:python数据分析基础之Numpy库详解(一)一维数组的索引与切片一维数组的切片操作与Python列表的切片操作很相似。例如,我们可以用下标2~6来选取元素2,3,4... 查看详情

学机器学习,不会数据分析怎么行?之numpy详解(代码片段)

最近学习强化学习和机器学习,意识到数据分析的重要性,就开始补Python的几个科学计算库,并总结到博客中。本篇博客中用到的代码在这里下载。什么是Numpy? NumPy是Python数值计算最重要的基础包,支持高级大量的维度数... 查看详情

python基础|numpy详细教程

...,通过专栏的学习可以熟练掌握python编程,同时为后续的数据分析,机器学习及深度学习的代码能力打下坚实的基础。 查看详情

python之numpy简介和创建数组(代码片段)

...数列七、np.ones()创建一数列一、NumPy简介NumPy(NumericalPython)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效的多(该结构也... 查看详情

python可视化应用实战案例30篇-基础绘图命令详解含大量示例代码(附python代码)

...要的地理分析库包geopandas与geoplot。由于已经有多种介绍数据分析库包numpy、pandas、xarray的内容介绍,这里不再开列专门的博文讲解。Matplotlib基础介绍Matplotlib是建立在numpy库包上的数 查看详情

python可视化应用实战案例30篇-基础绘图命令详解含大量示例代码(附python代码)

...要的地理分析库包geopandas与geoplot。由于已经有多种介绍数据分析库包numpy、pandas、xarray的内容介绍,这里不再开列专门的博文讲解。Matplotlib基础介绍Matplotlib是建立在numpy库包上的数 查看详情

numpy模块(详解)(代码片段)

重点索引和切片级联聚合操作统计操作矩阵什么是数据分析是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以... 查看详情

python学习教程(python学习路线):pandas库基础分析-详解时间序列的处理(代码片段)

...andas库基础分析-详解时间序列的处理 在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与时间相关的数据,比如量化交易就是从历史数据中寻找股价的变化规律。Python中自带的处理时间的... 查看详情

数据分析之numpy库入门

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

numpy库(代码片段)

NumPy详细教程(官网手册翻译)Python之Numpy详细教程 一、基础篇1、NumPy-Ndarray对象  ndarray描述相同类型的元素集合,可以使用基于零的索引访问集合中的项目,ndarray中的每个元素在内存中使用相同大小的块。ndarray中的每个元素... 查看详情

数据分析之numpy基础包(代码片段)

首先为啥要学numpy呢?空口无凭,看个小练习假如有一个列表,里面有n个值,取出列表大于某个数的值importnumpyasnpimportrandom#假如取出其中大于60的值a=[random.randint(1,100)foriinrange(50)]#print(a)#学python第一天new_list=... 查看详情

python基础|timerandomcollectionsitertools标准库详解

⭐本专栏旨在对Python的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握python编程,同时为后续的数据分析,机器学习及深度学习的代码能力打下坚实的基础。 查看详情

pythonnumpy是啥库

NumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPythoNumPy是Python语言的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数... 查看详情

python基础之numpy.reshape详解

参考技术A这个方法是在不改变数据内容的情况下,改变一个数组的格式,参数及返回值,官网介绍:a:数组--需要处理的数据newshape:新的格式--整数或整数数组,如(2,3)表示2行3列,新的形状应该与原来的形状兼容,即行数和列... 查看详情

科学计算库numpy基础操作(代码片段)

pycharm,python3.7,numpy版本1.15.12018年9月11日04:23:06 """科学计算库Numpy基础操作时间:20189110011"""importnumpyprint("""------以矩阵的方式读取数据------------------genfromtxt函数(‘文件路径‘,delimiter=‘分隔符‘,dtype=读取方式)---- 查看详情

python基础之基本数据类型详解(代码片段)

...、Number(数值)1、分类整数浮点数布尔复数2、整数说明python可以处理任意大小的整数,包含复数普通定义#普通定义num1=10#id(变量名):可以查看变量的内存地址#hex(十进制数字):将十进制数字转为十六进制数字(0x为开头,不是数... 查看详情

简单python快乐之旅之:python基础语法之numpy专题(代码片段)

文章目录1.Pycharm导入Numpy模块2.PythonNumpy简介3.Numpy-创建一维数组3.1.使用array()函数创建1DNumpy数组3.2.使用arange()函数创建1DNumpy数组3.3.使用linspace()函数创建1DNumpy数组3.4.小结4.创建随机值的数组4.1.numpy中的shape4.2.numpy.random.rand()的语... 查看详情