In [42]: some_df = pd.DataFrame(columns=['A'])
...: for i in range(4):
...: some_df.loc[i] = [np.random.randint(0,10,(1,3))]
...:
In [43]: some_df
Out[43]:
A
0 [[7, 0, 9]]
1 [[3, 6, 8]]
2 [[9, 7, 6]]
3 [[1, 6, 3]]
Числовые значения столбца являются массивом объектов типа dtype, содержащим массивы:
In [44]: some_df['A'].to_numpy()
Out[44]:
array([array([[7, 0, 9]]), array([[3, 6, 8]]), array([[9, 7, 6]]),
array([[1, 6, 3]])], dtype=object)
Если все эти массивы имеют одинаковую форму, stack
прекрасно объединяет их вновое измерение:
In [45]: np.stack(some_df['A'].to_numpy())
Out[45]:
array([[[7, 0, 9]],
[[3, 6, 8]],
[[9, 7, 6]],
[[1, 6, 3]]])
In [46]: _.shape
Out[46]: (4, 1, 3)
Это работает только с одним столбцом.stack
как и все concatenate
обрабатывает входной аргумент как итеративный, по сути, список массивов.
In [48]: some_df['A'].to_list()
Out[48]:
[array([[7, 0, 9]]),
array([[3, 6, 8]]),
array([[9, 7, 6]]),
array([[1, 6, 3]])]
In [50]: np.stack(some_df['A'].to_list()).shape
Out[50]: (4, 1, 3)