使用np.genfromtxt读取多类型CSV时字符串列读取为空的问题
解决np.genfromtxt读取CSV字符串列为空的问题
问题原因
你遇到的问题是因为字符串类型<U未指定具体长度,numpy无法分配足够的内存空间读取第一列的字符串内容,导致标签列全部为空。
修正方案
指定字符串类型时补充具体字符长度(根据标签实际长度调整,比如U10表示最多容纳10个Unicode字符),修正后的代码如下:
import numpy as np file_data = np.genfromtxt(filepath, dtype=[('label','U10'),('value','<f4')], delimiter=',', skip_header=1)
运行后即可得到预期输出:
[('first', 0.1234) ('second', 0.05678) ('three', 0.009876)]
额外说明
如果不确定标签的最大长度,也可以用dtype=None让numpy自动推断各列类型,同时自动读取表头作为字段名:
file_data = np.genfromtxt(filepath, dtype=None, delimiter=',', skip_header=1, names=True)
内容的提问来源于stack exchange,提问作者sadphysicsboy_jon
相关产品推荐
相关产品推荐

