【问题标题】:Converting pandas data frame into numpy ndarray [duplicate]将熊猫数据框转换为numpy数组[重复]
【发布时间】: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 它 - 单击答案旁边的复选标记 () 将其从灰色切换为已填充。谢谢。跨度>

标签: arrays python-3.x pandas numpy dataframe


【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2020-09-08
      • 1970-01-01
      • 2017-10-29
      • 2020-07-15
      • 2015-06-11
      • 2017-11-22
      • 2021-05-05
      • 1970-01-01
      相关资源
      最近更新 更多