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

如何用Numpy更高效读取文本文件中的矩阵?

快速读取自定义格式矩阵到NumPy的方法

嘿,我来给你推荐个更高效简洁的方法,不用再手动繁琐分割啦!针对你这种用[ ... ]包裹的多组空格分隔数字的文本格式,我们可以结合正则表达式和NumPy的内置方法快速搞定。

实现步骤与代码

import numpy as np
import re

# 1. 读取文本文件内容
with open('matrix.txt', 'r') as f:
    content = f.read()

# 2. 提取所有方括号内的数字块
# 用正则匹配[和]之间的所有内容(非贪婪模式避免匹配到多个块)
num_groups = re.findall(r'\[(.*?)\]', content)

# 3. 转换为NumPy二维数组
# 对每个数字组,用np.fromstring直接转成一维数组,再组合成二维数组
final_matrix = np.array([np.fromstring(group, sep=' ') for group in num_groups])

print(final_matrix)

代码解释

  • 正则提取:re.findall(r'\[(.*?)\]', content)会精准提取每个[ ]包裹的数字字符串,得到两个元素的列表,比如[' 1 2 3 ... 13', ' 14 15 ... 23']
  • NumPy快速转换:np.fromstring(group, sep=' ')是NumPy专门用来处理空格分隔数字字符串的高效方法,省去了手动分割、类型转换的繁琐步骤,直接生成一维数组
  • 组合成二维数组:通过列表推导式把所有一维数组组合起来,直接得到你需要的二维NumPy数组格式

运行这段代码后,输出的结果就是你期望的:

[[ 1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13.]
 [14. 15. 16. 17. 18. 19. 20. 21. 22. 23.]]

如果你的矩阵里都是整数,还可以加上dtype=int参数,让数组类型更准确:

final_matrix = np.array([np.fromstring(group, sep=' ', dtype=int) for group in num_groups])

这样得到的就是整数类型的二维数组啦!


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:44:43