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

如何将15个130×150的float数组按列保存到.txt文件?

高效解决方案

如果用Python处理,最推荐用numpy实现,完全避开Python层面的循环,借助底层C优化的矢量操作,效率拉满:

步骤说明

  1. 将所有15个数组(假设均为numpy数组,形状为(130, 150))收集到一个列表中;
  2. 对每个数组按行优先扁平化(先取第一行所有元素,再第二行,直到最后一行),得到15个长度为19500的一维数组;
  3. 把这些一维数组按列拼接成(19500, 15)的二维数组;
  4. 直接写入目标文本文件。

代码示例

import numpy as np

# 假设a、b、c...q已经是形状为(130,150)的numpy float数组
arr_list = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q]

# 扁平化每个数组并按列拼接
combined_array = np.column_stack([arr.flatten(order='C') for arr in arr_list])

# 写入文件,可按需调整小数位数、分隔符等格式
np.savetxt('array.txt', combined_array, fmt='%.6f', delimiter=' ')

纯Python替代方案(无numpy依赖)

如果不能使用numpy,也可以用zip批量处理,比15个独立循环高效得多:

# 假设a、b、c...q是嵌套列表结构:每个数组包含130个行列表,每行有150个float
# 先将每个数组按行扁平化
flattened_arrays = []
for arr in [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q]:
    flat = []
    for row in arr:
        flat.extend(row)
    flattened_arrays.append(flat)

# 转置后逐行写入文件
with open('array.txt', 'w', encoding='utf-8') as f:
    for row in zip(*flattened_arrays):
        f.write(' '.join(f'{num:.6f}' for num in row) + '\n')

关键说明

  • numpy方案的核心是flatten和column_stack的矢量操作,完全绕开Python循环,处理大数组时速度比纯Python快几个数量级;
  • 两种方案都保证了每个数组的元素按行提取,最终输出文件第一列对应a的所有行元素,第二列对应b,以此类推,完全符合19500行15列的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:15:33