我有一个带有包含numpy数组的列的DataFrame:
df = pd.DataFrame({'Arrays': [np.array([1, 2, 3]),
np.array([4, 5, 6]),
np.array([7, 8, 9])]})`
我需要以一种提取二维数组的方式提取数据。像这样:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])`
但是df.values
会导致一个包含数组列表的数组:
array([[array([1, 2, 3])],
[array([4, 5, 6])],
[array([7, 8, 9])]], dtype=object)`
是否存在针对此类问题的运算符,或者我需要遍历所有条目吗?
答案 0 :(得分:3)
使用concatenate
和flatten
的组合从数组数组中获得一个扁平数组
np.concatenate(df.values.flatten())
替代方法是使用ravel
np.concatenate(df.values.ravel())
示例
import pandas as pd
import numpy as np
df = pd.DataFrame({'Arrays': [np.array([1, 2, 3]),
np.array([4, 5, 6]),
np.array([7, 8, 9])]})
np.concatenate(df.values.flatten())
# array([1, 2, 3, 4, 5, 6, 7, 8, 9])
最后,要获得二维数组,您可以简单地将reshape
用作
np.reshape(flattened_array, (len(df),len(df)))
答案 1 :(得分:0)
除
df.applymap(list).values.ravel()
您也可以
df.applymap(list).values.reshape((-1,))
给你
array([list([1, 2, 3]), list([4, 5, 6]), list([7, 8, 9])], dtype=object)
否则,否则
df.applymap(list)['Arrays'].tolist()
导致
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]