将字典中的数组转换为数组列表

Posted

技术标签:

【中文标题】将字典中的数组转换为数组列表【英文标题】:convert arrays in dictionary into list of arrays 【发布时间】:2020-12-24 13:32:34 【问题描述】:

我有一本名为“电压”的字典,其中包含 206 个项目,如图所示。每个项目都是 (25;3;1) 的数组。我想将字典转换为数组列表并将其作为输入以使用 model.fit() 训练模型

我尝试将“带有数组的字典”(电压)作为模型的输入。但它给出了以下错误。

model.fit(x=voltage, y=output, steps_per_epoch=None, epochs=1000)

ValueError: No data provided for "input_1". Need data for each key in: ['input_1']

后来我尝试将“带有数组的字典”转换为“数组列表”

temp = []
input= []

for key, value in voltage:
temp = [key,value]
input.append(temp)

ValueError                                Traceback (most recent call last)
<ipython-input-26-8b0eb6392467> in <module>
  2 input= []
  3 
----> 4 for key, value in voltage:
  5     temp = [key,value]
  6     input.append(temp)
ValueError: not enough values to unpack (expected 2, got 1)

我试过了,但出现值错误。

请帮帮我。

谢谢你:)

已编辑 正如 Geethesh 所说,我尝试了这段代码,它已将我的字典转换为数组列表,但形状很奇怪。最初,我字典中的项目的形状是 (25,3,1)

for value, key in voltage.items():
temp = [key,value]
input.append(temp)

np.shape(input)

This gives me a shape of (1, 206, 2)

但我需要 (206, 25, 3, 1) 的形状。列出 206 个样本,每个样本的大小为 (25,3,1)。

如何更改列表的形状??

【问题讨论】:

for key, value in voltage: 应该是for key, value in voltage.items(): 您可以在代码块中发布您的预期输出吗?只有几行,可能显示两个不同的键 @RichieV .Hi。我已经编辑了这个问题。请检查并让我知道您是否清楚:) 【参考方案1】:

你必须使用

for value, key in voltage.items():
    input.append(value)

你也可以使用列表推导

input= [value for value, key in  voltage.items()]

【讨论】:

感谢您的回复。您的建议有助于我将字典转换为数组列表。现在我想将列表中所有数组的形状更改为 (25;3 ;1).我需要这个形状作为模型的输入。 ValueError:检查输入时出错:预期 input_4 有 4 个维度,但得到了形状为 (2, 1) 的数组。如果我在不更改形状的情况下传递数组列表,则会出现此错误。但在转换为列表之前,字典中的所有数组都处于形状(25;3;1)

以上是关于将字典中的数组转换为数组列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套字典转换为 3D 数组

字典列表中的熊猫数组

如何将字典转换为数组

将一个字典内的内value转换为集合:返回一个数组,此数组中包含输入字典的键值对中的数组的所有元素(为NSArray添加category)

如何将 Azure 流分析中的“类字典”结构转换为带有 javascript UDF 的多维数组?

使用 hql 将列表中的列转换为数组和数组到 hive 中的列表