You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取DataFrame所有行列值并转换为二维Numpy数组

多标签分类DataFrame转二维Numpy数组解决方案

问题核心

你的需求是把多标签分类DataFrame里的所有行列数据转成二维Numpy数组,但之前按列迭代追加的代码把数组弄成一维了——这是因为直接逐个追加元素会把结构扁平化。

两种正确实现方式

方法1:用Pandas原生方法(最省事)

DataFrame自带to_numpy()方法,直接一步转成二维数组,完全不用手动迭代:

import pandas as pd
import numpy as np

# 示例多标签DataFrame
df = pd.DataFrame({
    '标签A': [0, 1, 0],
    '标签B': [1, 0, 1],
    '标签C': [1, 1, 0]
})

# 直接转换为二维Numpy数组
result = df.to_numpy()
print(result)
print(f"数组维度: {result.ndim}")

输出结果:

[[0 1 1]
 [1 0 1]
 [0 1 0]]
数组维度: 2

方法2:手动按行迭代(如果非要自己写循环)

要是你想手动实现,别按列遍历,按行来,每一行作为一个子列表加入结果:

result_list = []
for _, row in df.iterrows():
    result_list.append(row.tolist())

# 转成Numpy数组
result = np.array(result_list)
print(result)

为啥原代码得到一维数组?

大概率你是这么写的:

# 错误示例:按列迭代+extend会扁平化所有元素
wrong_result = []
for col in df.columns:
    wrong_result.extend(df[col].tolist())
wrong_result = np.array(wrong_result)
print(wrong_result)  # 输出一维数组:[0 1 0 1 0 1 1 1 0]

这种写法会把每一列的元素挨个塞进列表,直接把二维结构压成一维,自然不符合要求。

目标输出匹配

如果你的目标输出是类似下面的二维数组:

array([[0, 1, 1],
       [1, 0, 1],
       [0, 1, 0]])

上面两种正确方法都能完美生成这个格式。

内容的提问来源于stack exchange,提问作者Ralph Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 01:00:20