在Python中创建许多Ndarrays(不同尺寸)的列表



我是Python的新手。我们是否有任何类似的结构,例如Python 2.7中的MATLAB的Multidimensional structure arrays,可以处理列表中的许多NDARRAYS。例如,我用different size but all are 4D有15个层(即layer_X, X=[1,15]):

>>>type(layer_1)
<type 'numpy.ndarray'>
>>> np.shape(layer_1)
(1, 1, 32, 64)
>>> np.shape(layer_12)
(1, 1, 512, 1024)

我如何分配一个用它们的位置x?

来处理这些ndarray的结构

您可以使用字典:

layer_dict = {}
for X in range(1,16):
    layer_dict['layer_' + str(X)] = np.ndarray(shape=(1, 1, 32, 64))

这允许存储各种尺寸的数组(以及确切的任何其他数据类型),添加和删除组件。它还使您可以有效访问阵列。

添加图层类型:

layer_dict['layer_16'] = np.ndarray(shape=(1, 1, 512, 1024))

删除一个:

del layer_dict['layer_3']

请注意,这些项目未按顺序存储,但这并不能阻止您使用与初始施工环中类似方法的方法有效地处理。如果要使用有序的词典,则可以从collections模块中使用OrderedDict

如果有任何特定规则选择每一层的大小,请更新您的问题,我将编辑答案。

这是顺序用法的一个示例:

for X in range(1,16):
    temp = layer_dict['layer_' + str(X)]
    print type(temp)

temp的类型是ndarray,您可以用作任何其他ndarray

更详细的用法示例:

for X in range(1,16):
    temp = layer_dict['layer_' + str(X)]
    temp[0, 0, 2, 0] = 1
    layer_dict['layer_' + str(X)] = temp

这里将每一层获取到temp,修改后,然后将其重新分配给layer_dict

您只能使用 list

layers = [layer_1, layer_12]

最新更新