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

温柔且上进c 温柔且上进c     2023-03-23     734

关键词:

Numpy库基础

一维数组的索引与切片

  • 一维数组的切片操作与Python列表的切片操作很相似。例如,我们可以用下标2~6来选取元素2,3,4,5
import numpy as np
arr=np.arange(7)
arr[2:6]

  • 也可以用下标0~7,以2为步长选取元素:
arr[0:7:2]

  • 和Python中使用列表一样,我们也可以利用负数下标翻转数组:
arr[::-1]

多维数组的切片与索引

  • ndarray支持在多维数组上的切片操作。为了方便起见,我们可以用一个省略号()来表示遍历剩下的维度

  • 如下举例:首先我们使用arange函数创建一个数组并改变其维度,使之变成一个三维数组:

arr = np.arange(24).reshape((2, 3, 4))
arr.shape

arr

  • 多维数组arr中有0~23的整数,共24个元素,是一个2×3×4的三维数组。我们可以形象地把它看做一个两层楼建筑,每层楼有12个房间,并排列成3行4列。或者,我们也可以将其看成是excel表格中工作表(sheet)、行和列的关系。可以看出,reshape函数的作用是改变数组的“形状”,也就是改变数组的维度,其参数为一个正整数元组,分别指定数组在每个维度上的大小

  • 如果指定的维度和数组的元素数目不相吻合,函数将抛出异常

  • 我们可以用三维坐标来选定任意一个房间,即楼层、行号和列号。例如,选定第1层楼、 第1行、第1列的房间(也可以说是第0层楼、第0行、第0列,这只是习惯问题),可以这样表示:

arr[0,0,0]

  • 如果我们不关心楼层,也就是说要选取所有楼层的第1行、第1列的房间,那么可以将第1 个下标用英文标点的冒号:来代替:
arr[:,0,0]

  • 选取第一层的所有房间:
arr[0]

  • 我们还可以这样写,选取第1层楼的所有房间:
arr[0,:,:
]

  • 多个冒号可以用一个省略号(…)来代替,因此上面的代码等价于:
arr[0,...]

  • 进而我们可以选取第1层楼、第2排的所有房间:
arr[0,1]

  • 再进一步,我们可以在上面的数组切片中间隔地选定元素:
arr[0, 1, ::2]

  • 如果要选取所有楼层的位于第2列的房间,即不指定楼层和行号,用如下代码即可:
arr[..., 1]

  • 类似地,我们可以选取所有位于第2行的房间,而不指定楼层和列号:
arr[:, 1]

  • 如果要选取第1层楼的所有位于第2列的房间,在对应的两个维度上指定即可:
arr[0, :, 1]

  • 如果要反向选取第1层楼的最后一列的所有房间,使用如下代码:
arr[0, ::-1, -1]

  • 在该数组切片中间隔地选定元素:
arr[0, ::2, -1]

  • 如果在多维数组中执行翻转一维数组的命令,将在最前面的维度上翻转元素的顺序,在我们的例子中将把第1层楼和第2层楼的房间交换:
arr[::-1]

数组的维度改变

在上面我们已经学习怎样使用reshape函数来改变数组的形状,现在来学习一下怎样将数组展平

  • (一):ravel函数 、我们可以用ravel函数完成展平的操作:
arr.ravel()

  • (二):flatten函数、这个函数恰如其名,flatten就是展平的意思,与ravel函数的功能相同。 不过,flatten函数会请求分配内存来保存结果,而ravel函数只是返回数组的一个视图(view):
arr.flatten()

  • (3)用元组设置数组维度 除了可以使用reshape函数,我们也可以直接用一个正整数元组来设置数组的维度,如下所示:
arr.shape=(4,6)
arr

  • 正如你所看到的,这样的做法将直接改变所操作的数组,现在数组arr成了一个4×6的多维数组

  • (4) transpose在线性代数中,转置矩阵是很常见的操作。对于多维数组,我们也可以这样做:

arr.transpose()

  • (5) resizeresize和reshape函数的功能一样,但resize会直接修改所操作的数组:
arr.resize((2, 12))
arr

数组的组合

  • 首先创建两个3×3的二维数组
arr_one = np.arange(9).reshape((3,3))
arr_two = 2 * arr_one

  • (1) 水平组合 我们先从水平组合开始学习。将ndarray对象构成的元组作为参数,传给
    hstack函数。如下所示:
np.hstack((arr_one,arr_two))

  • 我们也可以用concatenate函数来实现同样的效果,如下所示:
np.concatenate((arr_one,arr_two),axis=1)


  • (2) 垂直组合 垂直组合同样需要构造一个元组作为参数,使用vstack函数。如下所示:
np.vstack((arr_one,arr_two))

  • 同样,我们将concatenate函数axis参数设置为0即可实现同样的效果。这也是axis参数的默认值:
np.concatenate((arr_one,arr_two),axis=0)


  • (3) 深度组合 将相同的元组作为参数传给dstack函数,即可完成数组的深度组合。所谓深度组合,就是将一系列数组沿着纵轴(深度)方向进行层叠组合。举个例子,有若干张二维平 面内的图像点阵数据,我们可以将这些图像数据沿纵轴方向层叠在一起,这就形象地解释了什么是深度组合
np.dstack((arr_one, arr_two))

  • (4) 列组合 column_stack函数对于一维数组将按列方向进行组合,如下所示:
np.column_stack((arr_one,arr_two))

  • 而对于二维数组,column_stack与hstack的效果是相同的:
  • 我们可以用==运算符来比较两个NumPy数组是否完全相同!!
np.hstack((arr_one, arr_two)) == np.column_stack((arr_one, arr_two))

  • (5) 行组合 当然,NumPy中也有按行方向进行组合的函数,它就是row_stack函数。对于两个一维数组,将直接层叠起来组合成一个二维数组
  • 对于二维数组,row_stack与vstack的效果是相同的:
np.vstack((arr_one, arr_two))
np.row_stack((arr_one, arr_two))

  • 使用 ==运算符 对比两个数组
np.row_stack((arr_one, arr_two)) == np.vstack((arr_one, arr_two))

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()的语... 查看详情