![](/img/trans.png)
[英]Looping over 1st dimension of 3D numpy array to create a smaller 3D array, via slicing
[英]Python 3: Numpy 3d array to Pandas dataframe with 1st dimension values as columns and rows/cols position paired in one column
正如长标题提示的那样,我有一个形状为 [n,m,z] 的数组,我想把它变成一个 Pandas dataframe 第一列是行和列 Z4757FE07FD492A8 和 60EA6A760D63 维度的数组13 列是从第一个维度开始的值,导致 (m*z)Xn 的 DataFrame。 我一直在阅读其他示例,但我没有找到任何将一维旋转到列的示例。
例如,对于形状为 [3,2,4] 的数组
import numpy as np
import pandas as pd
rand_int = np.random.randint(10,90,(3,2,4))
print(rand_int)
[[[57 76 30 34]
[21 70 10 51]]
[[73 67 55 51]
[78 38 50 76]]
[[89 58 47 35]
[45 11 61 18]]]
我希望它返回为
Pair Col1 Col2 Col3
[0,0] 57 73 89
[0,1] 76 67 58
[0,2] 30 55 47
...
[1,3] 51 76 18
任何人都可以帮忙吗?
我可以循环m
和z
维度来检索值。
import numpy as np
import pandas as pd
n = 3
m = 2
z = 4
rand_int = np.random.randint(10, 90, (n,m,z))
datas = [[[57, 76, 30, 34],
[21, 70, 10, 51]],
[[73, 67, 55, 51],
[78, 38, 50, 76]],
[[89, 58, 47, 35],
[45, 11, 61, 18]]]
res = []
for i in range(m):
for j in range(z):
res.append([[i, j]] + [data[i][j] for data in datas])
df = pd.DataFrame(res, columns=['Pair', 'Col1', 'Col2', 'Col3'])
print(df)
Pair Col1 Col2 Col3
0 [0, 0] 57 73 89
1 [0, 1] 76 67 58
2 [0, 2] 30 55 47
3 [0, 3] 34 51 35
4 [1, 0] 21 78 45
5 [1, 1] 70 38 11
6 [1, 2] 10 50 61
7 [1, 3] 51 76 18
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.