numpy.loadtxt 加载一个文件

numpy.loadtxt to load a file

我有一个如下所示的文件:

(完整版可在此处访问:https://drive.google.com/file/d/1uKRgp6X6ZfQbUsEr2bQ3_ZOPZYFSjmhj/view?usp=sharing


[[51, 49, array([[ 67.,   0.,   0.,   0.],
       [  1.,  47.,   0.,   0.],
       [117.,   0.,   0.,   0.],
       [ 10., 126., 109.,   0.],
       [  7.,   0.,   0.,   0.],
       [ 90.,  50.,   0.,   0.],
       [ 50.,   0.,   0.,   0.],
       [  4.,  69.,  40.,  49.]])], 
[70, 49, array([[ 63.,   0.,   0.,   0.],
       [127.,  48.,   0.,   0.],
       [118.,   0.,   0.,   0.],
       [ 52., 125.,  68.,   0.],
       [  2.,   0.,   0.,   0.],
       [ 62., 102.,   0.,   0.],
       [ 84.,   0.,   0.,   0.],
       [ 58.,  89.,   5.,  72.]])],
[75, 49, array([[122.,   0.,   0.,   0.],
       [120., 104.,   0.,   0.],
       [ 86.,   0.,   0.,   0.],
       [104.,  24.,  15.,   0.],
       [ 99.,   0.,   0.,   0.],
       [ 77.,  41.,   0.,   0.],
       [124.,   0.,   0.,   0.],
       [126.,  37.,  73.,  59.]])]

其中标题为迭代 = 51、值 = 49、角度 = 数组(...)、迭代 = 70... 等等。

如何在我的脚本中加载它?谢谢

默认的 numpy 加载方法在这里不起作用,因为文件没有预期的格式。如果您负责生成此文件,请考虑使用例如numpy.savetxtnumpy.save,因此您可以相应地使用 numpy.loadtxtnumpy.load

对于您拥有的文件,如果源是可信的,非常快速且肮脏的 解决方案是使用eval 加载此文件。但是,请考虑阅读 the dangers of eval,因为 它可以执行该文件中的 任何 代码 .

假设您已像这样导入 numpy

import numpy as np

这应该有效:

with open('filename.txt') as file:
    contents = file.read().replace('array', 'np.array')
    data = eval(contents)