3 维 numpy 数组到 pandas 数据帧

3 dimensional numpy array to pandas dataframe

我有一个 3 维 numpy 数组

   ([[[0.30706802]],

   [[0.19451728]],

   [[0.19380492]],

   [[0.23329106]],

   [[0.23849282]],

   [[0.27154338]],

   [[0.2616704 ]], ... ])

形状 (844,1,1) 由 RNN model.predict()

y_prob = loaded_model.predict(X)

,我的问题是如何将其转换为 pandas 数据帧。 我用过 Keras

我的objective是这样的:

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

给你!

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()

将系列转换为数据框

想法是首先将嵌套列表展平为列表,然后使用 pandas 数据帧

from_records 方法在 df 中转换它
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'])