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

Python实现向已有文本文件指定列写入二维数组的方法

解决方法

由于np.savetxt()会覆盖整个文件,无法保留原有固定内容,我们需要逐行读取文件,仅替换其中的负值,再将修改后的内容写回。以下是具体实现步骤:

步骤1:导入模块并准备数组

确保你的二维数组已转换为numpy数组(若未转换则执行以下操作):

import numpy as np

# 将列表转为numpy数组(如果你的数组还不是numpy格式)
columns = np.array(columns)

步骤2:读取原始文件内容

一次性读取所有行,方便后续修改操作:

with open('你的文件名.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

步骤3:定位数据行起始位置

根据文件结构,找到需要修改的数据行的起始索引。从你的样本内容来看,数据行在155 740 AUX IFACE AUX QFACT AUX CELLGRP和 155 0 0两行之后:

data_start_idx = None
for i, line in enumerate(lines):
    if '155 740 AUX' in line:
        data_start_idx = i + 2  # 跳过标题行和后续的统计行
        break

步骤4:逐行替换负值

遍历每一行数据,找到其中的负值并替换为数组对应位置的值:

for row_idx in range(155):
    # 获取当前数据行并分割为单个元素
    current_line = lines[data_start_idx + row_idx].strip()
    elements = current_line.split()
    
    # 定位所有负值的位置
    negative_positions = [idx for idx, val in enumerate(elements) if float(val) < 0]
    
    # 替换每个负值为数组中对应元素(可调整格式化精度)
    for col_idx, pos in enumerate(negative_positions):
        elements[pos] = f"{columns[row_idx][col_idx]:.6f}"
    
    # 重新组合为一行并替换原行
    modified_line = ' '.join(elements) + '\n'
    lines[data_start_idx + row_idx] = modified_line

步骤5:写入修改后的内容

将修改后的所有行写入新文件(建议先写入新文件验证,确认无误后再替换原文件):

with open('修改后的文件名.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

注意事项

  • 确保文件中数据行的数量正好是155行,与数组行数匹配;
  • 每一行数据中的负值数量需与数组列数(60)一致,避免索引越界;
  • 可调整数值格式化规则(如:.6f)来匹配原文件的精度要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:49:15