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

相关文章

使用easy connect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题

《使用easyconnect之后,maven无法使用,原来需要配置-Djava.net.preferIPv4Stack=true问题》:本文主要介绍使用easyconnect之后,maven无法... 目录使用easGWowCy connect之后,maven无法使用,原来需要配置-DJava.net.pr

pandas DataFrame keys的使用小结

《pandasDataFramekeys的使用小结》pandas.DataFrame.keys()方法返回DataFrame的列名,类似于字典的键,本文主要介绍了pandasDataFrameke... 目录Pandas2.2 DataFrameIndexing, iterationpandas.DataF

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException: org.junit.Test问题

《解决tomcat启动时报Junit相关错误java.lang.ClassNotFoundException:org.junit.Test问题》:本文主要介绍解决tomcat启动时报Junit相... 目录tomcat启动时报Junit相关错误Java.lang.ClassNotFoundException

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

MySQL主从同步延迟问题的全面解决方案

《MySQL主从同步延迟问题的全面解决方案》MySQL主从同步延迟是分布式数据库系统中的常见问题,会导致从库读取到过期数据,影响业务一致性,下面我将深入分析延迟原因并提供多层次的解决方案,需要的朋友可... 目录一、同步延迟原因深度分析1.1 主从复制原理回顾1.2 延迟产生的关键环节二、实时监控与诊断方案

SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法

《SQLyog中DELIMITER执行存储过程时出现前置缩进问题的解决方法》在SQLyog中执行存储过程时出现的前置缩进问题,实际上反映了SQLyog对SQL语句解析的一个特殊行为,本文给大家介绍了详... 目录问题根源正确写法示例永久解决方案为什么命令行不受影响?最佳实践建议问题根源SQLyog的语句分

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl