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

Numpy如何根据某一列的条件提取另一列数据并避免使用循环

解决方法

使用Numpy原生的布尔索引就能完全绕过循环,实现你的需求,代码如下:

import numpy as np
from numpy import genfromtxt

df = genfromtxt('data.csv', delimiter=",")
# 按第4列的条件筛选对应行的第0列数据
data1 = df[df[:, 4] == 0, 0]
data2 = df[df[:, 4] == 1, 0]
data3 = df[df[:, 4] == 2, 0]

# 如果需要得到Python原生列表格式,可在末尾加.tolist()
# 例:data1 = df[df[:, 4] == 0, 0].tolist()

原代码无法运行的原因

你代码里的data1 += df[i,0]写法错误:列表的+=操作要求右侧为可迭代对象,但df[i,0]是单个浮点数值,会直接触发类型错误。如果要让循环版本跑通,把+=改成append()方法即可:data1.append(df[i,0]),但循环写法远不如向量化布尔索引高效,尤其是数据量较大时性能差距非常明显。

内容的提问来源于stack exchange,提问作者Janek Nowak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:45:10