繁体   English   中英

3维numpy数组到熊猫数据框

[英]3 dimensional numpy array to pandas dataframe

我有一个3维的numpy数组

   ([[[0.30706802]],

   [[0.19451728]],

   [[0.19380492]],

   [[0.23329106]],

   [[0.23849282]],

   [[0.27154338]],

   [[0.2616704 ]], ... ])

具有RNN模型产生的形状(844,1,1).predict()

y_prob = load_model.predict(X)

,我的问题是如何将其转换为熊猫数据框。 我用过Keras

我的目标是:

0      0.30706802
7      0.19451728
21     0.19380492
35     0.23329106
42       ...
         ...   
815      ...
822      ...
829      ...
836      ...
843      ...
Name: feature, Length: 78, dtype: float32

想法是首先将嵌套列表展平到列表,然后使用from_records方法在df from_records其转换

import numpy as np
import pandas as pd

data = np.array([[[0.30706802]],[[0.19451728]],[[0.19380492]],[[0.23329106]],[[0.23849282]],[[0.27154338]],[[0.2616704 ]]])

import itertools
data  = list(itertools.chain(*data))
df = pd.DataFrame.from_records(data)

没有itertools

data = [i for j in data for i in j]
df = pd.DataFrame.from_records(data)

或者您可以使用答案之一中提到的flatten()方法,但是您可以像这样直接使用它

pd.DataFrame(data.flatten(),columns = ['col1']) 

干得好!

import pandas as pd
y = ([[[[11]],[[13]],[[14]],[[15]]]])
a = []
for i in y[0]:
    a.append(i[0])
df = pd.DataFrame(a)
print(df)

输出:

    0
0  11
1  13
2  14
3  15

随时为axis = 0和axis = 1设置自定义索引值。

您可以尝试:

s = pd.Series(your_array.flatten(), name='feature')

https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.flatten.html

然后,您可以使用s.to_frame()将系列转换为数据s.to_frame()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM