Python 使用多个数组更改列表的形状

Python 使用多个数组更改列表的形状,python,list,shapes,training-data,cnn,Python,List,Shapes,Training Data,Cnn,最初,我有一个名为voltage的字典,其中有206个数组,每个数组的形状(25,3,1)。我使用以下代码将字典转换为数组列表 temp = [] input= [] for value, key in voltage.items(): temp = [key,value] input.append(temp) input是我列表的名称。当我检查列表的形状时,我得到(1206,2) 我想将列表的形状更改为(206,25,3,1)。当我将输入传递到以下模型时,我得到一个错误(附

最初,我有一个名为
voltage
的字典,其中有206个数组,每个数组的形状
(25,3,1)
。我使用以下代码将字典转换为数组列表

temp = []
input= []

for value, key in voltage.items():
    temp = [key,value]
    input.append(temp)
input
是我列表的名称。当我检查列表的形状时,我得到
(1206,2)

我想将列表的形状更改为
(206,25,3,1)
。当我将
输入
传递到以下模型时,我得到一个错误(附在下面)

ValueError:检查输入时出错:预期输入_5有4 维度,但获得了具有 (1206,2)形状


非常感谢您的帮助。

您可以执行以下操作:

import numpy as np

d = {1: np.random.rand(25, 3, 1),
2: np.random.rand(25, 3, 1),
3: np.random.rand(25, 3, 1),
4: np.random.rand(25, 3, 1)}

arr = np.empty((len(d.keys()), *d[1].shape))

for i, k in enumerate(d.keys()):
    arr[i] = d[k]

print(arr.shape)  # (4, 25, 3, 1)
以所需大小创建一个空的
numpy
数组,然后将dict、
volatge
值附加到所需位置


如果您的按键不规则(表示1、4、6等),您可以创建一个映射,将
arr
的第一个条目映射到
voltage
值。

一些注释:一个大小的数组(N、3、1)似乎没有意义,您可能应该将最后一个级别变平并使其具有形状(N、3):
[[0]、[1]、[2]、[1]、[2]、[3]],[2],[3],[4],…]
->
[0,1,2],[1,2,3],[2,3,4],…]
。另外,开始时键和值的顺序似乎不正确:
对于键,电压中的值。items():
按照您的步骤,
np.shape(input)
返回
(206,2)
而不是
(1206,2)
非常感谢@David。成功了。请分享一个链接,如果有的话,在那里我可以得到与此相关的文档。我想知道更多关于这方面的情况。谢谢您:D@PradyumnaTK关于什么的文档?numpy数组?关于将字典转换为列表、数组等,并访问其中的项。如果有,请分享。要不然就好了,我去看看:)@David@PradyumnaTK它没有“来源”,主要是实践。
K = Input(shape=(25,3,1))

x = Conv2D(16,(2,2), strides=2, activation='relu', data_format='channels_last', padding='same')(K)   
x = BatchNormalization()(x)

x = Conv2D(32,(2,2), activation='relu', data_format='channels_last' , padding='same')(x)  
x = BatchNormalization()(x)

x = Flatten()(x)

x = Dense(320, activation='relu')(x)
x = Dense(160, activation='relu')(x)
x = Dense(80, activation='relu')(x)
x = Dense(1)(x)

model = Model(K,x)

model.compile(optimizer='adam',loss='mse')

model.fit(x=input, y=output, steps_per_epoch=None, epochs=1000)
import numpy as np

d = {1: np.random.rand(25, 3, 1),
2: np.random.rand(25, 3, 1),
3: np.random.rand(25, 3, 1),
4: np.random.rand(25, 3, 1)}

arr = np.empty((len(d.keys()), *d[1].shape))

for i, k in enumerate(d.keys()):
    arr[i] = d[k]

print(arr.shape)  # (4, 25, 3, 1)