如何用Python的NumPy提取CSV特定数据并统计符合条件样本点
使用NumPy从CSV提取数据并统计特定条件样本数
步骤1:读取CSV文件到NumPy结构化数组
用numpy.genfromtxt读取CSV,明确指定表头和数据类型,确保OBJECTID和SEGMENT被解析为整数,避免后续运算出错:
import numpy as np # 读取CSV文件,delimiter根据实际分隔符调整(此处假设为逗号) data = np.genfromtxt( 'your_data.csv', delimiter=',', names=True, # 将第一行作为列名读取 dtype=[('OBJECTID', 'i4'), ('SEGMENT', 'i4'), ('LATDD', 'f8'), ('LONDD', 'f8')] )
步骤2:筛选并统计符合条件的样本
通过布尔索引筛选OBJECTID为奇数且SEGMENT为奇数的样本,再用np.sum统计数量:
# 生成筛选掩码 mask = (data['OBJECTID'] % 2 == 1) & (data['SEGMENT'] % 2 == 1) # 统计符合条件的样本数 count = np.sum(mask) print(f"符合条件的样本点数量:{count}")
针对你提供的数据集验证
观察你给出的所有样本:
- 所有SEGMENT值(19574、19610、22222、25658、25830)均为偶数
- 因此没有同时满足OBJECTID和SEGMENT都为奇数的样本,最终统计结果为0
常见问题排查
若你之前尝试时出错,大概率是数据类型问题:
- 未指定dtype时,NumPy可能将OBJECTID和SEGMENT解析为字符串,此时
%运算会直接报错 - 读取时必须明确指定整数类型(
i4表示32位整数),才能正常进行奇偶判断
内容的提问来源于stack exchange,提问作者Nick Sleeper
相关产品推荐
相关产品推荐

