将两个numpy数组转换成数据框。

14

我想将两个numpy数组转换为一个包含两列的DataFrame

第一个numpy数组'images'的形状是102, 1024

第二个numpy数组'label'的形状是(1020, )

我的核心代码如下:

images=np.array(images)
label=np.array(label)
l=np.array([images,label])
dataset=pd.DataFrame(l)

但事实证明这是一个错误,提示如下:

ValueError: could not broadcast input array from shape (1020,1024) into shape (1020)

我该怎么把这两个NumPy数组转换成一个数据框的两列?


可能是合并NumPy数组的重复问题。 - Grigory
3个回答

31

如果你想将它们作为不同的列插入DataFrame中,你无法轻松地堆叠它们,因为你无法在一个DataFrame的一列中插入一个二维数组,所以你需要将它转换为其他格式,例如列表list

因此,以下类似的方法可以解决问题:

import pandas as pd
import numpy as np
images = np.array(images)
label = np.array(label)
dataset = pd.DataFrame({'label': label, 'images': list(images)}, columns=['label', 'images'])

这将创建一个包含1020行和2列的DataFrame,其中第二列中的每个项目都包含长度为1024的1D数组。


2

作为一名工程师,我喜欢创建矩阵时的视觉效果。

matrix_aux = np.vstack([label,images])
matrix     = np.transpose(matrix_aux)
df_lab_img = pd.DataFrame(matrix)

需要编写更多的代码,但可以得到 Numpy 数组。


0

您也可以使用 hstack 函数

import pandas as pd
import numpy as np

dataset = pd.DataFrame(np.hstack((images, label.reshape(-1, 1))))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接