如何将CSV文件中的16位二进制数据读取为NumPy一维布尔数组
高效解决16位二进制CSV转NumPy一维布尔数组的方案
方案一:简洁直观的字符串拼接法
适合中小规模文件,代码清晰易懂:
import numpy as np with open('test_file.csv', 'r') as f: # 读取所有行,去除换行符与空行 lines = [line.strip() for line in f if line.strip()] # 拼接所有二进制字符串,逐个字符转换为布尔值 binary_str = ''.join(lines) bool_array = np.array([c == '1' for c in binary_str], dtype=np.bool_)
方案二:内存高效的生成器法
针对大文件优化,避免一次性加载全部数据到内存:
import numpy as np with open('test_file.csv', 'r') as f: # 用生成器逐个遍历有效字符(跳过换行符与空行) char_generator = (c for line in f for c in line.strip()) # 直接从生成器创建布尔数组 bool_array = np.fromiter((c == '1' for c in char_generator), dtype=np.bool_)
原方法失效原因说明
你之前用np.loadtxt(file, dtype=bool)失败的核心原因:
loadtxt默认将每行视为单个数据元素,而非拆分字符- 当指定
dtype=bool时,所有非空字符串都会被解析为True,最终得到的是每行对应一个布尔值的数组,而非拆分后的单个二进制位
内容的提问来源于stack exchange,提问作者Schoppe
相关产品推荐
相关产品推荐

