将熊猫数据框转换为numpy数组[重复]
Posted
技术标签:
【中文标题】将熊猫数据框转换为numpy数组[重复]【英文标题】:Converting pandas data frame into numpy ndarray [duplicate] 【发布时间】:2018-05-03 00:34:36 【问题描述】:我正在使用 pandas 数据框来清理和处理数据。但是,我需要将其转换为 numpy ndarray 才能使用利用矩阵乘法。我将数据框转换为具有以下内容的列表列表:
x = df.tolist()
这将返回以下结构:
[[1, 2], [3, 4], [5, 6], [7, 8] ...]
然后我将它转换成这样的 numpy 数组:
x = np.array(x)
但是,打印如下:
print(type(x))
print(type(x[0]))
给出这个结果:
'numpy.ndarray'
'numpy.float64'
但是,我需要它们都是 numpy 数组。如果它不是来自 pandas 数据帧,而我只是转换一个硬编码的列表列表,那么它们都是 ndarrays。当该列表是从数据框制作的时,如何获取列表以及该列表中的列表是 ndarrays?非常感谢您的阅读,这让我难过了好几个小时。
【问题讨论】:
如果我的回答对您有帮助,请不要忘记accept 它 - 单击答案旁边的复选标记 (✓
) 将其从灰色切换为已填充。谢谢。跨度>
【参考方案1】:
我觉得你需要values
:
df = pd.DataFrame('C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0])
print (df)
C D
0 7 1
1 8 3
2 9 5
3 4 7
4 2 1
5 3 0
x = df.values
print (x)
[[7 1]
[8 3]
[9 5]
[4 7]
[2 1]
[3 0]]
然后通过索引选择:
print (x[:,0])
[7 8 9 4 2 3]
print (x[:,1])
[1 3 5 7 1 0]
print (type(x[:,0]))
<class 'numpy.ndarray'>
也可以转置数组:
x = df.values.T
print (x)
[[7 8 9 4 2 3]
[1 3 5 7 1 0]]
print (x[0])
[7 8 9 4 2 3]
print (x[1])
[1 3 5 7 1 0]
【讨论】:
【参考方案2】:as_matrix怎么样:
x = df.as_matrix()
【讨论】:
似乎as_matrix
在 pandas 0.23.0 版中已被弃用,而应使用 values
【参考方案3】:
您可能想尝试df.get_values()
,并最终尝试np.reshape
。
【讨论】:
以上是关于将熊猫数据框转换为numpy数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章