在Python中将元组的数据帧强制转换为numpy矩阵
我有一个数据帧在Python中将元组的数据帧强制转换为numpy矩阵,python,arrays,numpy,matrix,Python,Arrays,Numpy,Matrix,我有一个数据帧 df = pd.DataFrame({'age' : [(1, 2), (1, 3), (1, 1)], \ 'year' : [(20, 30), (30, 40), (30, 40)]}) df Out[58]: age year 0 (1, 2) (20, 30) 1 (1, 3) (30, 40) 2 (1, 1) (30, 40) 我想把它转换成这样的numpy数组 array([[ 1,
df = pd.DataFrame({'age' : [(1, 2), (1, 3), (1, 1)], \
'year' : [(20, 30), (30, 40), (30, 40)]})
df
Out[58]:
age year
0 (1, 2) (20, 30)
1 (1, 3) (30, 40)
2 (1, 1) (30, 40)
我想把它转换成这样的numpy数组
array([[ 1, 2, 20, 30],
[ 1, 3, 30, 40],
[ 1, 1, 30, 40]])
i、 e.数据框中的一行是矩阵中的一行,数据框中的一个元组列是矩阵中的两列。数据帧中可能有更多的元组(导致数组中有更多的列)
所以,若col\u names
是一个列名数组(这里col\u names=['age','year']
)
我想要像
numpy\u array=some\u聪明的表达式(col\u name)
与np堆叠。连接
以获得1D展平数组,然后重塑形状-
np.concatenate(np.concatenate(df.values)).reshape(df.shape[0],-1)
样本输出-
In [460]: np.concatenate(np.concatenate(df.values)).reshape(df.shape[0],-1)
Out[460]:
array([[ 1, 2, 20, 30],
[ 1, 3, 30, 40],
[ 1, 1, 30, 40]])
或者,我们可以使用np.hstack
获得扁平化版本-
np.hstack(np.hstack(df.values))
要选择特定的列,只需对这些列建立索引,获取数组数据并继续。因此,对于
col\u names
中的列名列表,请改用df[col\u names].values
。与np堆叠。连接以获得1D展平数组,然后重新整形-
np.concatenate(np.concatenate(df.values)).reshape(df.shape[0],-1)
样本输出-
In [460]: np.concatenate(np.concatenate(df.values)).reshape(df.shape[0],-1)
Out[460]:
array([[ 1, 2, 20, 30],
[ 1, 3, 30, 40],
[ 1, 1, 30, 40]])
或者,我们可以使用np.hstack
获得扁平化版本-
np.hstack(np.hstack(df.values))
要选择特定的列,只需对这些列建立索引,获取数组数据并继续。因此,对于col\u names
中的列名列表,请改用df[col\u names].values