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”,以此类推。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值