Numpy和Pandas数据维度的理解————切莫简单问题复杂化

2023-12-19 14:18

本文主要是介绍Numpy和Pandas数据维度的理解————切莫简单问题复杂化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

几句话说明白的事情就不要整长篇大论甚至加上数学公式了,不是所有人都心情瞎扯。扯完还有人夸“简洁明了”,有没有搞错?

axis意为轴,在本文的语境中指Numpy和Pandas包中的维度。

1. 二维数组 / 数据框:

axis=0,即0轴,为数组或数据框的“行”;
axis=1,即1轴,为数组或数据框的“列”。

abc
0a1b1c1
1a2b2c2
2a3b3c3
>>>df.iloc[2]
df1.iloc[2]
a    a3
b    b3
c    c3
Name: 2, dtype: object>>>df.iloc[2,1]
'b3'

iloc和loc以及其他定位操作,先行(0轴)后列(1轴)

2. 三维数组

我有如下两表:

abc
0αa1αb1αc1
1αa2αb2αc2
2αa3αb3αc3
abc
0βa1βb1βc1
1βa2βb2βc2
2βa3βb3βc3

两个表可以放进一个np.array里:(用代号表示数字用于示例,别愚蠢地问我为什么这些字符串在下文还能做算术,我用数字大家看得明白吗?)

array1 = [[["αa1","αb1","αc1"],["αa2","αb2","αc2"],["αa3","αb3","αc3"]],[["βa1","βb1","βc1"],["βa2","βb2","βc2"],["βa3","βb3","βc3"]]]

显然现在有3个轴,也许你记为XYZ,但请按Python的编程世界理解为0轴,1轴和2轴(对于R语言来说从1开始计数)。
这3条轴中,
有1条 = [0, 1] 记录着表的序号 == “第几张表”
有1条 = [a, b, c] 记录着每个表的列名(列序号) == “每张表的哪一列”
有1条 = [0,1,2] 记录着每个表的行名(行序号) == “每张表的哪一行

若执行array1.sum(axis=0),则结果为 array([αa1+βa1, αb1+βb1, αc1+βc1],
---------------------------------------[αa2+βa2, αb2+βb2, αc2+βc2],
---------------------------------------[αa3+βa3, αb3+βb3, αc3+βc3] )

可以看出①三维数组对某个维度求和,即将所有“在其他维度上坐标相同但在此维度上坐标不同”的元素相加;②0轴即表的序号,“第几张表”。

若执行array1.sum(axis=1),则结果为 array([αa1+αa2+αa3, αb1+αb2+αb3, αc1+αc2+αc3],
---------------------------------------[βa1+βa2+βa3, βb1+βb2+βb3, βc1+βc2+βc3])

可以看出①所有表序号相同(在同一张表内),列名相同(列序号)(同一列),但行序号不同(不在同一行)的元素被相加;②1轴即每个表的行名(行序号),“每张表的哪一行”。

若执行array1.sum(axis=2),则结果为 array([αa1+αb1+αc1, αa2+αb2+αc2, αa3+αb3+αc3],
---------------------------------------[βa1+βb1+βc1, βa2+βb2+βc2, βa3+βb3+βc3])

可以看出①所有表序号相同(在同一张表内),行序号相同(同一行),但列序号不同(不在同一列)的元素被相加;②2轴即每个表的列名(列序号),“每张表的哪一列”。

3. 总结

(1)二维表里维度就是行与列;
(2)三维表里维度的顺序(表名→行名→列名)。逻辑也非常好懂,先确定哪张表,再在表内按照二维表的方法排列;
(3)更高维度的表(array里的中括号嵌套更多)中逻辑相似,阶梯降维(4th→3rd→2nd→1st)。具体请用类似我的方法实践证明。比如4维表里的元素应该有4个用于识别的字符构成,例如“Aαa1”,以此类推。

这篇关于Numpy和Pandas数据维度的理解————切莫简单问题复杂化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/512512

相关文章

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核