将值添加到 numpy 数组以使它们具有相同的形状

adding values to numpy array to make them of equal shape

我有一个名为 '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])

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

根据我对你的问题的理解,MEL 是一个包含 94824 个不同形状的二维数组的列表。您想要 return 个与最大数组具有相同形状但填充为 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)