Поскольку ваш массив MEL
не имеет однородной формы, сначала нам нужно отфильтровать массивы, форма которых является общей (то есть (99, 13)
).Для этого мы могли бы использовать:
filtered = []
for arr in MEL:
if arr.shape == (99, 13):
filtered.append(arr)
else:
continue
Затем мы можем инициализировать массив для хранения результатов.И затем мы можем перебрать этот отфильтрованный список массивов и вычислить среднее значение по оси 1 следующим образом:
averaged_arr = np.zeros((len(filtered), 99))
for idx, arr in enumerate(filtered):
averaged_arr[idx] = np.mean(arr, axis=1)
Это должно вычислить желаемую матрицу.
Вот демонстрация длявоспроизведите вашу настройку, предполагая, что все массивы одинаковой формы:
# inputs
In [20]: MEL = np.empty(94824, dtype=np.object)
In [21]: for idx in range(94824):
...: MEL[idx] = np.random.randn(99, 13)
# shape of the array of arrays
In [13]: MEL.shape
Out[13]: (94824,)
# shape of each array
In [15]: MEL[0].shape
Out[15]: (99, 13)
# to hold results
In [17]: averaged_arr = np.zeros((94824, 99))
# compute average
In [18]: for idx, arr in enumerate(MEL):
...: averaged_arr[idx] = np.mean(arr, axis=1)
# check the shape of resultant array
In [19]: averaged_arr.shape
Out[19]: (94824, 99)