【北京理工大学-Python 数据分析-1.1】

news/2024/11/21 1:40:21/

数据维度
维度:一组数据的组织形式

一维数据:由对等关系的有序或无序数据构成,采用线性组织形式。包括列表、集合和数组(python中不常见,但在C++和Java中比较常见)类型。

  • 列表:数据类型可以不同
  • 数组:数据类型相同
    二维数据:由多个一维数据组成,是一维数据的组合形式(表现形式:列表)。
  • 表格
    多维数据:由一维或者二维数据在新维度上扩展形成(表现形式:列表)。
    高维数据:利用最基本的二元关系展示数据间的复杂结构。

NumPy是一个开源的Python科学计算基础库。

  • 一个强大的N维数组对象ndarray。
  • 广播功能函数(是指ndarry在执行某些计算时,如矩阵间的数值计算,对应位置元素1对1执行标量运算,而非线性代数中的矩阵间的运算。可以确保数组间形状不完全相同时可以自动的通过广播机制扩散到相同的形状,进而执行相应的计算功能)。
  • 整合C/C++/Fortran代码的工具。
  • 线性代数、傅里叶变换、随机数生成等功能。
  • NumPy是SciPy、Pandas等数据处理或科学计算库的 基础单元。
  • NumPy的印用(import numpy as np)
    使用Numpy进行科学计算,底层使用的C语言。
    N维数组对象:ndarray
  • 观察:科学计算中,一个维度的所有数据类型往往相同,数组对象采用相同的数据类型,有助于节省运算空间。
    ndarray是一个多维数组对象,由两部分构成:
  • 实际的数据。
  • 描述这些数据的元数据(数据维度、数据类习性等)。
  • nadarray数组一般要求所有元素类型相同(同质),数组下标从0开始(与列表相同)。
  • 使用np.array()生成一个ndarray数组。
  • ndarray在程序中的别名是:array.
  • np。array(0输出成[]形式,元素间用空格分隔。
  • ndarray的两个基本概念:是轴(axis):保存数据的维度;秩(rank):轴的数量,是描述ndarray的基本数据和形式。

ndarray对象的属性

属性说明
.ndim秩,即轴的数量或维度的数量
.shapendarray对象的尺度,对于矩阵,n行m列
.sizendarray对象元素的个数,相当于.shape中的n*m值
.dtypendarray对象的元素类型
.itemsizendarray对象中每个元素的大小,以字节为单位
a=np.array([[0,1,2,3,4],[9,8,7,6,5]])
a.ndim
a.dtype
a.itemsize

ndarray的元素类型

数据类型说明
bool布尔类型,True或False
intc与C语言中的int 类型一致,一那是int32或者int64
intp用于索引的证书,与C语言中的ssize_t一致,int32或者int64
int8字节长度的整数,取值:[-128,127]
int1616维长度的整数,取值:[-64,63]
int3232位长度的整数,取值:[-231 ,231 -1]
int6464位长度的整数,取值:[-263 ,263 -1]
uint88位无符号整数,取值:[0,255]
uint1616位无符号整数,取值:[0,65535]
uint3232位无符号整数,取值[0,232 -1]
uint6464位无符号整数,取值:[0,264 -1]
float1616位半精度浮点数:1位符号位,5位指数,10位尾数
float3232位半精度浮点数:1位符号位,6位指数,23位尾数
float6464位半精度浮点数:1位符号位,11位指数,52位尾数
complex64复数类型,实部和虚部都是32位浮点数
complex128复数类型,实部和虚部都是64位浮点数

numpy为什么有如此多的元素性能和类型?
ndarray的元素类型

  • 对比:Python语法仅支持整数、浮点数和复数3种类型。
  • 科学计算涉及的数据较多,对存储和性能都有较高的要求 ;
  • 对元素类型精细定义,有助于Numpy合理使用存储空间并优化性能。
  • 对元素类型精细定义,有助于程序员对程序规模有合理的评估。
    ndarray数组的创建方法
  • 从Python中的列表、元组等类型创建ndarray数组。
  • 使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等。
  • 从字节流(raw bytes)中创建ndarray数组。
  • 从文件中读取特定格式,创建ndarray数组。

ndarray数组的创建方法:
(1)从Python中的列表、元组等类型创建ndarray数组。

x=np.array(list/tuple)
x=np.array(list/tuple,dtype=np.float32)
x=np.array([0,1,2,3])##从列表类型创建
x=np.array((4,5,6,7))##从元组类型创建
x=np.array([[1,2],[9,8],(0.1,0.2)])##从列表和元组混合类型创建

当np.array()不指定dtype时,NumPy将根据数据情况指定一个dtype类型。

(2)使用Numpy中的函数创建ndarray数组,如:arange,ones,zeros等。

函数说明
np.arange(n)类似range()函数,返回ndarray类型,元素从0到n-1
np.ones(shape)根据shape生成一个全1数组,shape是元组类型
np.zeros(shape)根据shape生成一个全0数组,shape是元组类型
np.full(shape,val)根据shape生成一个数组,每个元素的值都是val
np.eye(n)创建一个正方的n*n单位矩阵,对角线为1,其余为0
np.ones_like(a)根据数组a的形状生成一个全1数组
np.zeros_like(a)根据数组a的形状生成一个全0数组
np.full_like(a,val)根据数组a的形状生成一个数组,每个元素值都是val
np.linspace()根据起止数据等间距地跳虫数据,形成数组
np.concatenate()将2个或多个数组合并成一个新的数组
np.array(10) ##得到一个从0到9的数组
np.ones((3,6))##得到一个所有元素都是1的,3行6列的数组
np.zeros((3,6),dtype=np.int32)##得到一个所有元素都是32位浮点类型数据0的,36列的数组
np.eye(5)##对角线为15阶数组
x=np.ones((2,3,4))##含有最外层两个元素的数组,每个元素有3行(3维)4列
print(x)
x.shape()
a=linspace(1,10,4)##生成的是从1到10之间,以步长为4的等间距数组
b=linspace(1,10,4,endpoint=False)##endpoint表示:终点值10 是否作为结束值
c=np.concatenate((a,b))##采用concatenate将a和b两个数组连接起来

ndarray数组的变换
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换。

a=np.ones((2,3,4),dtype=np.int32)

ndarray数组的维度变换

方法说明
.reshape(shape)不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape)与.reshape()功能一致,但修改原数组
.swapaxes(ax1,ax2)将数组n个维度中的2个维度进行调换
.flatten()对数组进行降维,返回折叠后的一维数,但原数组不变
a=np.ones((2,3,4),dtype=np.int32)
a.reshape((3,8))##对数组a进行变形,形成一个3维,每个维度8个元素的数组,基本前提是不改变元素的总个数。
a.resize((3,8))##如果是使用resize()的时候,将会改变原来a的形状。
b=a.flatten()##是对a数组进行降维,将得到一个一位数组。

ndarray数组的类型变换

new_a=a.astype(new_type)
a=np.ones((2,3,4),dtype=np.int)
b=a.astype(np.float)

ndarray数组向列表的转换
ls=a.tolist()

a=np.full((2,3,4),25,dtype=np.int32)
b=a.tolist()##将数组a转换成列表b

数组的索引和切片
一维数组的索引和切片:与Python的列表类似

a=np.array([9,8,7,6,5])
a[2]##一维数组a的第三个元素
a[1:4:2]##一维数组的切片:起始编号:终止编号不含:2是步长,切片中的三个元素间采取冒号分隔

多维数组的索引和切片

索引

a=np.arange(24).reshape((2,3,4))
a
a[1,2,3] ##对多维数组进行索引,最外层第一个元素的第二维度的第三个元素
a[0,1,2] ##最外层第0个元素的第一维度的第二个元素(numpy的数据都是从0开始下标)
a[-1,-2,-3] ##采用负数进行索引,最后一层的倒数第二维度的倒数第三个元素##注意,每个维度的索引值之间用逗号分隔

多维数组的切片

a=np.arange(24).reshape((2,3,4))
a[:,1,-3]##选取一个维度(切片不含第三个元素)
a[:,1:3,:]##每个维度切片,与一维数组相同
a[:,:,::2]##使用冒号,表示覆盖每个维度的全部数据,每个维度可以以步长为2进行跳跃切片

ndarray数据的运算
数组标量之间的运算:作用于数组的每一个元素

a=np.arange(24).reshape((2,3,4))
a.means()##求数组的平均值,是一个标量
a=a/a.means()##用数组的每一个元素除以数组的平均值,获得a与平均值的商。

Numpy的一元函数,对ndarray中的元素执行元素级运算的函数

函数说明
np.abs(x);np.fabs(x)计算数组各元素的绝对值
np.sqrt(x)计算数组各元素的平方根
np.square(x)计算数组个元素的平方
np.log(x);np.log10(x);np.log2(x)计算数组个元素的自然对数、10底对数和2底对数
np.ceil(x);np.floor(x)计算数组各元素的ceiling值或floor值
np.rint(x)计算数组各元素的四舍五入值
np.modf(x)将数组以各元素的小数和整数部分以2各独立数组形式返回
np.cos(x),np.cosh(x);np.sin(x),sinh(x);np.tan(x)计算数组各元素的普通型和双曲型三角函数
np.exp(x)计算数组各元素的指数
npsign(x)计算数组各元素的符号值,1(+),0,-1(-)
a=np.arange(24).reshape((2,3,4))
np.square(a)##不改变原来a的元素值,如果需要计算后的新值,需要对计算后的值进行赋值。
a=np.sqrt(a)
np.modf(a)

NumPy二元函数

函数说明
+;-:*;/: **两个宿主各元素进行对应运算
np.maximum(x,y);np.fmax();np.minimum(x,y);np.fmin()元素级的最大值最小值计算
np.mod(x,y)元素级的模运算
np.copysign(x,y)将数组y中的各元素值的符号复制给素组x对应元素
>;<;>=;<=;==;!=算术比较,产生布尔型数组

在这里插入图片描述

小结回顾:

NumPy库入门

  • 数据的维度:一维、二维、多维、高维
  • ndarray类型属性、创建和变换
  • 数组的索引和切片
  • 数组的运算:一元函数、二元函数
    属性
    .ndim
    .shape
    .size
    .dtype
    .itemsize

创建和变换
np.arange(n)
np.ones(shape)
np.zeros(shape)
np.full(shape,val)
np.eye(n)
np.ones_like(a)
np.zeros_like(a)
np.full_like(a,val)
.reshape(shape)
.resize(shape)
.swapaxes(ax1,ax2)
.flatten(1)


http://www.ppmy.cn/news/8629.html

相关文章

【免费开放源码】审批类小程序项目实战(预约审批端)

第一节&#xff1a;什么构成了微信小程序、创建一个自己的小程序 第二节&#xff1a;微信开发者工具使用教程 第三节&#xff1a;深入了解并掌握小程序核心组件 第四节&#xff1a;初始化云函数和数据库 第五节&#xff1a;云数据库的增删改查 第六节&#xff1a;项目大纲以及制…

【Python应用】tkinter简介

简介 tkinter是Python自带的GUI库。 tkinter的全称是Tk Interface。 其中Tk是开发桌面应用的GUI工具库&#xff0c;它是Tcl的标准GUI&#xff0c;而Tcl全称Tool Command Language&#xff0c;是一种动态编程语言&#xff0c;可用于桌面应用开发。关于Tk和Tcl&#xff0c;可以…

记忆化搜索—— 滑雪[洛谷]

记忆化搜索—— 滑雪一、[SHOI2002] 滑雪题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示二、暴力DFS的缺陷三、记忆化搜索记忆化数组DFS1、分析2、代码一、[SHOI2002] 滑雪 [SHOI2002] 滑雪&#xff08;洛谷&#xff09; 题目描述 Michael 喜欢滑雪。这并不奇怪…

阿里微服务质量保障系列(一):微服务知多少

年初买了一本集团巨佬联合出的书《阿里测试之道》&#xff0c;然后认真拜读了下&#xff0c;我相信看过的同学都会获益匪浅&#xff0c;此书分享了阿里在大促保障、移动App测试、大数据测试、AI系统测试、云计算测试、资损防控、物流类测试等领域的方法、技术和工具平台&#x…

C语言版扫雷——从0到1实现扫雷小游戏

&#x1f412;博客名&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;有志者&#xff0c;事竟成&#xff0c;破釜沉舟&#xff0c;百二秦关终属楚&#xff1b;苦心人&#xff0c;天不负&#xff0c;卧薪尝胆&#xff0c;三千越甲可吞吴。 扫雷思维导图 目录 扫雷思维…

【Ansible自动化运维工具】Ansible常用模块的基本使用(二)

【Ansible自动化运维工具】Ansible常用模块的基本使用(二) 一、检查本地ansible环境1.检查系统版本2.检查ansible版本二、Ansible常用模块的基本使用(一)链接三、ping模块的基本使用四、service模块的基本使用1.service模块介绍2.service的选项3.service模块的使用五、setu…

UE5笔记【十五】漂流者游戏制作【二】雕刻一个峡谷+增加水体

雕刻峡谷 我们希望角色从一个峡谷中开始。 用上一节中&#xff0c;我们配置的Auto图层&#xff0c;雕刻两条山脉&#xff0c;从而雕刻出一条峡谷。然后切换到选择模式下。我们找到PlayStart&#xff0c;然后将其移动到峡谷中&#xff0c; 然后按F切换到角色位置&#xff0c;调…

前端框架搭建(六)搭建页面框架【vite】

1.安装所需依赖 需要安装 vue-routernaive视图框架 npm npm install vue-router4 yarn yarn add vue-router4npm i -D naive-ui2.搭建naive适配框架 创建文件夹——存放通用组件 在components下创建文件夹common 全局配置常用组件 在之前创建的global.d.ts中添加Window…