Как мне преобразовать 3-мерный массив NumPy в фрейм данных?

#python #pandas #numpy

#python #панды #numpy

Вопрос:

Как мне преобразовать 3-мерный массив NumPy [sample_index, channel, data] в фрейм данных с каждой выборкой в виде строки и каналами в виде столбца?

Массивы numpy выглядят следующим образом:

 import numpy as np
np.random.uniform(-25, 100, size=(6400,3,100*100))
  

Комментарии:

1. Вы описали, что вы хотите, чтобы происходило с каждым образцом / каналом. Что бы вы хотели сделать с 3-м измерением?

2. @CameronRiddell Я полагаю, что эти 100 * 100 точек данных могут быть сохранены в списке.

Ответ №1:

Давайте попробуем:

 samples, size = 6, 2*2

data = np.arange(samples*size *3).reshape(samples, 3, size)

pd.DataFrame(data.swapaxes(1,2).reshape(-1,3),
             np.repeat(np.arange(samples), size)
            )
  

Вывод, здесь каждый индекс представляет образец:

     0   1   2
0   0   4   8
0   1   5   9
0   2   6  10
0   3   7  11
1  12  16  20
1  13  17  21
1  14  18  22
1  15  19  23
2  24  28  32
2  25  29  33
2  26  30  34
2  27  31  35
3  36  40  44
3  37  41  45
3  38  42  46
3  39  43  47
4  48  52  56
4  49  53  57
4  50  54  58
4  51  55  59
5  60  64  68
5  61  65  69
5  62  66  70
5  63  67  71