使用多个数组更改列表的形状 python
Change the shape of list with multiple arrays python
最初,我有一个名为 voltage
的字典,其中包含 206 个数组,每个数组的形状都是 (25,3,1)
。我已经使用以下代码将字典转换为数组列表
temp = []
input= []
for value, key in voltage.items():
temp = [key,value]
input.append(temp)
input
是我的列表名称。当我检查列表的形状时,我得到 (1,206,2)
np.shape(input) - gives (1,206,2)
我想将列表的形状更改为 (206, 25,3,1)
。当我将 input
传递给以下模型时,出现错误(附在下面)。
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)
ValueError: Error when checking input: expected input_5 to have 4
dimensions, but got array with
(1, 206, 2) shape
希望得到一些帮助。
您可以执行以下操作:
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
数组,然后将字典、volatge
、值附加到所需位置。
如果您的密钥不规则(表示 1、4、6 等),您可以创建一个映射,将 arr
的第一个条目映射到 voltage
值。
最初,我有一个名为 voltage
的字典,其中包含 206 个数组,每个数组的形状都是 (25,3,1)
。我已经使用以下代码将字典转换为数组列表
temp = []
input= []
for value, key in voltage.items():
temp = [key,value]
input.append(temp)
input
是我的列表名称。当我检查列表的形状时,我得到 (1,206,2)
np.shape(input) - gives (1,206,2)
我想将列表的形状更改为 (206, 25,3,1)
。当我将 input
传递给以下模型时,出现错误(附在下面)。
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)
ValueError: Error when checking input: expected input_5 to have 4 dimensions, but got array with (1, 206, 2) shape
希望得到一些帮助。
您可以执行以下操作:
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
数组,然后将字典、volatge
、值附加到所需位置。
如果您的密钥不规则(表示 1、4、6 等),您可以创建一个映射,将 arr
的第一个条目映射到 voltage
值。