使用python将数组1D和2D的元组转换为数据帧

2024-04-18 15:09:37 发布

您现在位置:Python中文网/ 问答频道 /正文

这真是个好主意模型.predic返回。?如何在数据帧的列中转换这个元组?你知道吗

(array([1., 1., 1., ..., 1., 1., 1.]), array([[0.46502338, 0.53497662],
        [0.47072865, 0.52927135],
        [0.4696557 , 0.5303443 ],
        ...,
        [0.47139825, 0.52860175],
        [0.46367829, 0.53632171],
        [0.46586898, 0.53413102]]))
<class 'tuple'>

这些对我来说都不管用

pd.DataFrame(dict(class_pred=tuple[0], prob_0=tuple[1], prob_1=tuple[2]))
pd.DataFrame(np.column_stack(tuple),columns=['class_pred','prob_0','prob_1'])

我想得到这样的东西:

class_pred  prob_0    prob_1
1           0.470728  0.5292713

AniSkywalker解决方案非常有效。你知道吗

type(data)
print(data)

tuple
(array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),
 array([[0.46502338, 0.53497662],
        [0.47072865, 0.52927135],
        [0.4696557 , 0.5303443 ],
        [0.46511921, 0.53488079],
        [0.46739934, 0.53260066],
        [0.47387646, 0.52612354],
        [0.4737461 , 0.5262539 ],
        [0.47052631, 0.52947369],
        [0.47658316, 0.52341684],
        [0.47222654, 0.52777346]]))
df_pred = pd.DataFrame(data=dict(pred=data[0], prob_0=data[1][:,0], prob_1=data[1][:,1]))
print(df_pred)

    pred    prob_0      prob_1
0   1.0     0.465023    0.534977
1   1.0     0.470729    0.529271
2   1.0     0.469656    0.530344
3   1.0     0.465119    0.534881
4   1.0     0.467399    0.532601
5   1.0     0.473876    0.526124
6   1.0     0.473746    0.526254
7   1.0     0.470526    0.529474
8   1.0     0.476583    0.523417
9   1.0     0.472227    0.527773

Tags: 数据模型dataframedfdataarraydictclass
1条回答
网友
1楼 · 发布于 2024-04-18 15:09:37

我假设您的数据是((n), (n, 2))形式,因此:

import numpy as np
n = 5
data = (np.random.rand(n), np.random.rand(n, 2))

提供对输出外观的合理估计。你知道吗

假设data是:

(array([0.27856312, 0.66255123, 0.47976175, 0.59381106, 0.82096555]), array([[0.53719357, 0.55803381],
       [0.5749893 , 0.09712089],
       [0.91607789, 0.21579499],
       [0.50163898, 0.39188127],
       [0.60427654, 0.07801227]]))

您的dict方法实际上只需要一个修改:

import pandas as pd
df = pd.DataFrame(data=dict(class_pred=data[0], prob_0=data[1][:,0], prob_1=data[1][:,1]))

请注意,prob_0prob_1都是从第二个tuple元素派生的,但是使用Numpy的列索引,我们可以像您所描述的那样拆分各个数组。你知道吗

data[1][:,0]为例:首先,我们选择data元组的第二个元素,即(n, 2)矩阵。然后,我们从所有行(:)中选择第一列(0)。结果是该矩阵中每行的第一个元素的向量。你知道吗

用我编造的数字,df.head()应该给你:

   class_pred    prob_0    prob_1
0    0.278563  0.537194  0.558034
1    0.662551  0.574989  0.097121
2    0.479762  0.916078  0.215795
3    0.593811  0.501639  0.391881
4    0.820966  0.604277  0.078012

相关问题 更多 >