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

如何使用NumPy将不规则列文本文件转为指定形状数组

NumPy实现分组文本行横向拼接

实现逻辑

  • 逐行读取输入文件,自动跳过空行,将每行逗号分隔的数值解析为数字列表
  • 每3行划分为一个处理单元,将单元内3行的数值按顺序拼接为长度13的单行(前2行各5个值+第3行3个值,合计13列)
  • 拼接完成后按逗号分隔的格式写入目标文本文件,同时增加列数校验逻辑,避免输入格式错误导致输出异常

完整代码

import numpy as np

# 按需修改文件路径
INPUT_FILE = "input.txt"
OUTPUT_FILE = "output.txt"

# 读取并解析输入文件
all_data_rows = []
with open(INPUT_FILE, "r", encoding="utf-8") as f:
    for line in f:
        stripped_line = line.strip()
        if not stripped_line:
            continue
        # 解析每行逗号分隔的数值,若为浮点数可将int替换为float
        row_values = list(map(int, [item.strip() for item in stripped_line.split(",")]))
        all_data_rows.append(row_values)

# 按3行一组做横向拼接
merged_result = []
GROUP_STEP = 3
for idx in range(0, len(all_data_rows), GROUP_STEP):
    current_group = all_data_rows[idx:idx+GROUP_STEP]
    single_merged_row = []
    for row in current_group:
        single_merged_row.extend(row)
    merged_result.append(single_merged_row)

# 转NumPy数组做格式校验
output_array = np.array(merged_result)
# 校验拼接后列数是否符合13列的预期
if output_array.shape[1] != 13:
    raise ValueError(f"输入格式异常,拼接后列数为{output_array.shape[1]},预期为13列,请检查输入文件")

# 写入输出文件
with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
    for row in output_array:
        f.write(", ".join(map(str, row)) + "\n")

效果验证

传入示例输入运行代码,生成的输出文件和目标格式完全一致:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:06:15