我有一个名为'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])
但是形状保持不变。有什么建议吗?
答案 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)