将值添加到numpy数组以使其形状相同

时间:2018-12-14 12:54:44

标签: python loops numpy shapes

我有一个名为'MEL'的numpy数组,形状为(94824)。

这些值包含不同形状的数组,例如(99,13),(54、13)(87、13)。我想用零或更小的平均值填充小于(99,13)的数组。

MEL = numpy.ndarray and
for i in MEL: i = <class 'numpy.ndarray'> (i.shape = 99, 13) except for the ones that need to be filled
for j in i: j = <class 'numpy.ndarray'>

到目前为止,我有这个:

max_len = np.max([len(a) for a in MEL])
for i in MEL:
    i = np.asarray([np.pad(a, (0, max_len - len(a)), 'constant', constant_values=0) for a in i])

但是形状保持不变。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

据我对您的问题的了解,MEL是一个94824形状不同的二维数组的列表。您想返回形状与最大形状相同但填充为0的数组。

我想最简单的方法是创建具有适当形状的新数组,并用先前的数组填充它们。一个小例子是:

max_dim = [np.max([a.shape[0] for a in MEL]), np.max([a.shape[1] for a in MEL])]
new_MEL = []
for a in MEL:
    temp = np.zeros((max_dim[0], max_dim[1]))
    temp[:a.shape[0], :a.shape[1]] = a
    new_MEL.append(temp)