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

如何将带表头的文本文件中的表格数据保存为二维NumPy数组

解决文本文件转二维NumPy数组的问题

我来帮你梳理下问题所在,然后给出修复方案:

为什么你的代码没达到预期?

第一个版本的问题

你第一次的代码里,items.append(line.strip())只是把每行的字符串(去掉首尾空格和换行)添加到列表里,最后转成的数组是一维字符串数组——每个元素是整行的内容,不是拆分后的单个字段,所以不是你想要的二维结构。

第二个版本的问题

第二次尝试中,你在循环里每次都执行species = np.array(line),这相当于每次都用当前行的字符重新创建一个数组,覆盖了之前的变量。循环结束后,自然只保留最后一行的结果。


正确的实现方式

我们需要把每行拆分成单个元素(水果名+三个价格),再组成二维结构。这里有两种常用方法:

方法1:手动处理每行(灵活可控)

import numpy as np

def fruits():
    items = []
    with open('prices.txt', 'r') as data:
        # 跳过前两行表头
        for line in data.readlines()[2:]:
            # 按空格分割每行,得到[水果名, 价格1, 价格2, 价格3]的列表
            split_line = line.strip().split()
            # 把价格字符串转成浮点型(可选,根据需求调整)
            split_line[1:] = [float(price) for price in split_line[1:]]
            items.append(split_line)
    # 转成二维NumPy数组
    species = np.array(items)
    return species

方法2:用NumPy内置函数(简洁高效)

如果文件格式规整,直接用np.loadtxt跳过表头即可:

import numpy as np

def fruits():
    # skiprows=2 跳过前两行表头,dtype=object 支持混合字符串和数值类型
    species = np.loadtxt('prices.txt', skiprows=2, dtype=object)
    # 可选:把价格列转成浮点型
    species[:, 1:] = species[:, 1:].astype(float)
    return species

运行任意一种方法,你都会得到一个形状为(4,4)的二维数组,每行对应文件里的一行数据,每列对应水果名和不同供应商的价格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:48:12