Как получить среднее значение столбцов матрицы для столбца матриц внутри dataframe? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть датафрейм с двумя столбцами. Первый столбец имеет номер класса (1 или 0). Второй столбец содержит матрицы (1999,13). Я пытаюсь выяснить, как преобразовать матрицы в (1,13), получая среднее значение каждого столбца матрицы.

Причина, по которой я это делаю, заключается в обработке звука. Я извлек MFCC для каждого 10-секундного аудио файла, который у меня есть. На каждые 10 секунд звука приходится 1999 кадров, и каждый кадр имеет 13 кепстральных коэффициентов.

example_df = pd.DataFrame()
example_df['Class'] = [1,0,0]
example_df['MFCCs'] =[np.random.rand(4,2),np.random.rand(4,2),np.random.rand(4,2)]
example_df

когда я применяю np.mean, я почти всегда получаю среднее значение для класса, которое составляет около 0,5, даже если я указываю столбец 'MFCCs'.

Ожидаемый результат должен быть примерно таким:

   Class  MFCCs
0  1      [C01,C02]
1  0      [C11,C12]
2  0      [C21,C22]

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете использовать np.mean и указать ось, по которой вы хотите взять среднее значение, в вашем случае ось = 0. Например:

a = np.arange(8).reshape(4,2)
array([[0, 1],
       [2, 3],
       [4, 5],
       [6, 7]])

np.mean(a,axis=0)
array([3., 4.])

Для вашей цели вы можете сделать это в одну строку:

arrays = [np.random.rand(4,2),np.random.rand(4,2),np.random.rand(4,2)]
example_df['MFCCs'] =[np.mean(a,axis=0) for a in arrays]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...