将两个numpy数组转换为数据框

Posted

技术标签:

【中文标题】将两个numpy数组转换为数据框【英文标题】:Convert two numpy array to dataframe 【发布时间】:2018-03-04 21:09:52 【问题描述】:

我想将两个 numpy 数组转换为一个包含两列的 DataFrame。 第一个 numpy 数组“图像”的形状为 102, 1024。 第二个 numpy 数组“标签”的形状为 (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 数组转换为一个数据框中的两列?

【问题讨论】:

Combining NumPy arrays的可能重复 【参考方案1】:

你也可以使用hstack

import pandas as pd
import numpy as np

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

【讨论】:

【参考方案2】:

来自工程学,我喜欢创建矩阵的视觉方面。

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

需要更多的代码,但也可以使用 Numpy 数组。

【讨论】:

【参考方案3】:

您不能轻松地将它们堆叠起来,尤其是如果您希望将它们作为不同的列,因为您不能在 DataFrame 的一列中插入二维数组,因此您需要将其转换为其他内容,例如 @ 987654321@。

所以这样的事情会起作用:

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 的一维数组。

【讨论】:

以上是关于将两个numpy数组转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章

将数据框转换为 numpy 数组? [复制]

将熊猫数据框转换为numpy数组[重复]

按标签分隔数据框(将数据框转换为 numpy 数组)

将数据框转换为 Numpy 数组 [重复]

有没有办法将 numpy 数组转换为数据框,然后再转换回 numpy 数组并仍保持原始形状?

如何将包装为字符串的向量转换为熊猫数据框中的numpy数组?