In [29]: df = pd.DataFrame({'foo':['bar', 'baz'], 'bar':[1,2]})
...: display(df)
...:
...: my_array = np.array([[[0.61209572, 0.616934 , 0.94374808, 0.6818203 ],
...: [0.4236548 , 0.64589411, 0.43758721, 0.891773 ]],
...:
...: [[0.52184832, 0.41466194, 0.26455561, 0.77423369],
...: [0.5488135 , 0.71518937, 0.60276338, 0.54488318]]])
...:
foo bar
0 bar 1
1 baz 2
In [30]: my_array.shape
Out[30]: (2, 2, 4)
Назначение списка из двух (2,4) массивов работает:
In [31]: df['new'] = list(my_array)
In [32]: df
Out[32]:
foo bar new
0 bar 1 [[0.61209572, 0.616934, 0.94374808, 0.6818203]...
1 baz 2 [[0.52184832, 0.41466194, 0.26455561, 0.774233...
In [33]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
foo 2 non-null object
bar 2 non-null int64
new 2 non-null object
dtypes: int64(1), object(2)
memory usage: 176.0+ bytes
Но учтите, что вы не получите (2,2,4) массив обратно от панд; Вы получаете массив (2,) с элементами массива.
In [34]: df['new'].to_numpy()
Out[34]:
array([array([[0.61209572, 0.616934 , 0.94374808, 0.6818203 ],
[0.4236548 , 0.64589411, 0.43758721, 0.891773 ]]),
array([[0.52184832, 0.41466194, 0.26455561, 0.77423369],
[0.5488135 , 0.71518937, 0.60276338, 0.54488318]])], dtype=object)
Также будьте осторожны при сохранении такого кадра. Файл csv
будет сложно перезагрузить.