NumPy使用loadtxt读两列文本仅生成1维数组,如何得到(175,2)二维数组?
问题根源
你当前代码返回(175,)的一维数组不是真的缺失了第二列,而是因为你指定了带命名字段的dtype,numpy.loadtxt会返回结构化一维数组:数组的每个元素是同时包含id和mean两个字段的复合结构,所以维度只会显示为行数量。你可以通过meanData['id']和meanData['mean']分别取出两列数据验证内容完整。
解决方案
方案1:生成形状为(175,2)的普通二维数组
如果你的id列是纯数字,不需要保留字符串格式,直接去掉自定义dtype读取即可:
import os import numpy as NUM datapath = "\\Projects\\prob\\2020\\data\\" m1 = os.path.join(datapath, 'data.txt') # 直接读取默认返回二维数组 meanData = NUM.loadtxt(m1) print(meanData.shape) # 输出为 (175, 2)
如果需要保留id的字符串格式,可将读取到的结构化数组转换为二维数组:
meanData = NUM.loadtxt(m1, dtype={'names': ('id', 'mean'), 'formats': ('S10', 'float64')}) # 结构化数组转普通二维数组 meanData = NUM.array(meanData.tolist()) print(meanData.shape) # 输出为 (175, 2)
方案2:保留结构化数组格式
如果你不需要严格匹配(175,2)的shape,只是需要调用两列数据,直接通过字段名取值即可,无需额外转换:
# 取id列 id_col = meanData['id'] # 取mean列 mean_col = meanData['mean']
内容的提问来源于stack exchange,提问作者Chintamani Kandel
相关产品推荐
相关产品推荐

