Python | Numpy三维数组维度变换/提取

0. 问题描述

每次使用Numpy,遇到需要从(A,B,C)三维数组中提取(A,B)、(A,C)或者(B,C)或者(A,)这几个维度数据时,总是忘记该如何切片,网上搜到的又太详细,这里做个笔记方便自己下次使用时查找。

举个例子,如果我现在有一个 X =(10,20,30)的三维数组:
那么X = [ 0:9,0:19,0:29 ] / X = [ :,:,: ] (两种写法效果一样),都是取出X的全部数据,基于此,接下来就好切片了

1. (A,B,C)——> (A,B)

X_New = X[ :,:,0]

Python | Numpy三维数组维度变换/提取

; 2. (A,B,C)——> (A,C)

X_New = X[ :,0,:]

Python | Numpy三维数组维度变换/提取

3. (A,B,C)——> (B,C)

X_New = X[ 0,:,:]

Python | Numpy三维数组维度变换/提取

; 4. (A,B,C)——> (A,)

X_New = X[ :,0,0]

Python | Numpy三维数组维度变换/提取

如果你想在某个维度上取特定的一段值,直接修改 ” :” 前后的数字就可以啦,Nice!

Original: https://blog.csdn.net/qq_43580646/article/details/121913746
Author: 一只殿鹿
Title: Python | Numpy三维数组维度变换/提取



相关阅读

Title: python学习日记(分组运算)

基于Pandas与Numpy,我们可以执行许多复杂的分组运算

GroupBy分组机制

第一个阶段,pandas对象(无论是Series、DataFrame还是其他的)中的数据会根据我们所提供的一个或多个键被拆分(split)为多组。拆分操作是在对象的特定轴上执行的。例如,DataFrame可以在其行(axis=0)或列(axis=1)上进行分组。然后将一个函数应用(apply)到各个分组并产生一个新值。最后,所有这些函数的执行结果会被合并(combine)到最终的结果对象中。结果对象的形式一般取决于数据上所执行的操作。

数据流如图所示:

Python | Numpy三维数组维度变换/提取

我们建立一个Datafram数据集:

import numpy as np
import pandas as pd
df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
                    'key2' : ['one', 'two', 'one', 'two', 'one'],
                    'data1' : np.random.randn(5),
                    'data2' : np.random.randn(5)})

这里我们选择按照key2进行分组,并计算data2的平均值,我们这里要用的是:访问data2,并根据key2调用GroupBy的mean方法来计算分组平均值:

grouped = df['data2'].groupby(df['key2'])
data2_average = grouped.mean()

这时,我们如果传入key1、key2两个索引则得出不同结果:

key1  key2
a     one     0.880536
      two     0.478943
b     one    -0.519439
      two    -0.555730

在上述例子中,分组键为series,其实key1、key2可以是任何长度适当的数组。

另外,GroupBy的size方法可以返回一个含有分组大小的Series:

size = f.groupby(['key1', 'key2']).size()
print(size)
key1  key2
a     one     2
      two     1
b     one     1
      two     1

对分组进行迭代

GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)

for name, group in df.groupby('key1'):
    print(name)
    print(group)

结果为按照key1的不同分组

 key1     data1     data2
0    a -1.088142  0.894045
1    a -0.040777  0.552952
4    a  1.116719  0.979438
b
  key1     data1     data2
2    b -2.582169  0.131496
3    b -2.284920  1.906700

当有多个键时,默认情况下,元组的第一个元素是由键值组成的元组:

[En]

When there are multiple keys, the first element of a tuple is a tuple consisting of key values by default:

for (k1, k2), group in df.groupby(['key1', 'key2']):
    print((k1, k2))
    print(group)

输出结果如图所示:

  key1 key2     data1     data2
0    a  one  1.122848  0.658638
4    a  one -1.575574  0.096988
('a', 'two')
  key1 key2     data1     data2
1    a  two -1.242042  0.371779
('b', 'one')
  key1 key2  data1     data2
2    b  one -0.075  0.492735
('b', 'two')
  key1 key2     data1     data2
3    b  two -0.298669  0.039236

Original: https://blog.csdn.net/zw233333/article/details/124991494
Author: 吃pepper的dog酱
Title: python学习日记(分组运算)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/318894/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总