Преобразовать 3 Dim в 2 Dim и настроить класс?

#python #pandas #numpy #machine-learning #dimensions

#python #панды #numpy #машинное обучение #размеры

Вопрос:

Данные:

У меня есть массив размером (2200, 1000, 12). Первое значение (2200) — это индекс, в каждом индексе 1000 записей.

У меня есть другой массив для класса размером (2200). Каждая переменная здесь представляет метку для 1000 записей в каждом индексе.

Я хочу:

Как я могу в первом массиве собрать все вместе, чтобы преобразовать из 3 измерений в 2 измерения?

И как я могу поместить каждую переменную класса в 1000 записей?

Желаемый результат:

Размер фрейма данных (2200000,13)

2200000 будет общим количеством 1000 записей в индексе 2200. А столбец 13 будет соединением с классом, где каждая переменная класса будет повторяться тысячу раз, чтобы сохранить одинаковое количество строк.

Ответ №1:

Давайте сначала импортируем необходимые модули и сгенерируем макет данных:

 import numpy as np
import pandas as pd

M = 2200
N = 1000
P = 12

data = np.random.rand(M, N, P)
classes = np.arange(M)
 

Как я могу преобразовать из 3 измерений в 2 измерения?

 data.reshape(M*N, P)
 

Как я могу поместить каждую переменную класса в 1000 записей?

 np.repeat(classes, N)
 

Желаемый результат: размер фрейма данных (2200000,13)

 arr = np.hstack([data.reshape(M*N, P), np.repeat(classes, N)[:, None]])
df = pd.DataFrame(arr)
print(df)
 

Приведенный выше код выводит:

 0        0.371495  0.598211  0.038224  ...  0.777405  0.193472     0.0
1        0.356371  0.636690  0.841467  ...  0.403570  0.330145     0.0
2        0.793879  0.008617  0.701122  ...  0.021139  0.514559     0.0
3        0.318618  0.798823  0.844345  ...  0.931606  0.467469     0.0
4        0.307109  0.076505  0.865164  ...  0.809495  0.914563     0.0
...           ...       ...       ...  ...       ...       ...     ...
2199995  0.215133  0.239560  0.477092  ...  0.050997  0.727986  2199.0
2199996  0.249206  0.881694  0.985973  ...  0.897410  0.564516  2199.0
2199997  0.378455  0.697581  0.016306  ...  0.985966  0.638413  2199.0
2199998  0.233829  0.158274  0.478611  ...  0.825343  0.215944  2199.0
2199999  0.351320  0.980258  0.677298  ...  0.791046  0.736788  2199.0
 

Ответ №2:

Это вам поможет:

 array = array.reshape(2200000,13)