繁体   English   中英

多维 Numpy 数组到 Dataframe,错误:引发 ValueError(“数据必须是一维”) ValueError:数据必须是一维

[英]Multidimensional Numpy array to Dataframe, Error: raise ValueError("Data must be 1-dimensional") ValueError: Data must be 1-dimensional

我想训练一个神经网络,我有标签(单热编码)和图像都是 numpy arrays。 我想将它们添加到 DataFrame 以将它们用作训练的输入。 我试图重新创建一个示例,它看起来像这样:

import pandas as pd
import numpy as np

label_onehot_example = np.asarray([[0, 0, 0, 0, 1], [0, 0, 0, 1, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [1, 0, 0, 0, 0.], [1, 0, 0, 0, 0]])
images_example = np.random.randint(0, 1, (8, 10, 10, 3))

test_df = pd.DataFrame(data={'images': images_example, 'labels' : label_onehot_example})

我得到的错误是“raise ValueError("Data must be 1-dimensional") ValueError: Data must be 1-dimensional”

我猜这是由于图像输入的形状(在我的示例中为 (8, 10, 10,3)),但我不知道如何修复它。 我想过遍历图像数组并将图像和标签一一添加到 DataFrame 但这似乎非常低效。

在这种情况下,您的字典中的值应该是一个列表,因为 pandas 期望我认为您的列值具有某种可迭代性。 您可以使用普通的“list()”构造函数将 BWHC numpy 数组更改为具有 B 形状 WHC 元素的列表。 (标签相同)

import pandas as pd
import numpy as np

label_onehot_example = np.asarray([[0, 0, 0, 0, 1], [0, 0, 0, 1, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [1, 0, 0, 0, 0.], [1, 0, 0, 0, 0]])
images_example = np.random.randint(0, 1, (8, 10, 10, 3))

test_df = pd.DataFrame(data={'images': list(images_example), 'labels' : list(label_onehot_example)})

print(test_df.head())
>>>                                               images                     labels
0  [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ...  [0.0, 0.0, 0.0, 0.0, 1.0]
1  [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ...  [0.0, 0.0, 0.0, 1.0, 0.0]
2  [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ...  [1.0, 0.0, 0.0, 0.0, 0.0]
3  [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ...  [1.0, 0.0, 0.0, 0.0, 0.0]
4  [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ...  [1.0, 0.0, 0.0, 0.0, 0.0]

print(test_df.images[0].shape)
>>> (10, 10, 3)

PS:你用的是哪个版本的pandas? 当我第一次运行你的代码时,我得到了一个不同的错误,然后你报告了(我的是“ValueError:如果使用所有标量值,你必须传递一个索引”)。 我用 pandas 1.1.3

暂无
暂无

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

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