将文本文件读入结构化 2D numpy 数组
Posted
技术标签:
【中文标题】将文本文件读入结构化 2D numpy 数组【英文标题】:Reading text file into structured 2D numpy array 【发布时间】:2021-02-25 19:24:22 【问题描述】:我有一个结构化的 2D numpy 形状数组:[2,2]
填充示例 [2,2] 数组:
Main_Clt_data_array :
[ [ ((10, 10), 20, 300.) ((20, 20), 20, 300.) ]
[((30, 30), 30, 300.) ((40, 40), 40, 300.)] ]
属于以下数据类型
Cord_dtype = np.dtype([('X', np.float64), ('Y', np.float64)])
Clt_data_dtype=np.dtype([('Coord', Cord_dtype),('Angle', np.float64), ('Length', np.float64)])
使用 np.savetxt
我能够将数组保存到一个 txt 文件中,保持相同的形状和顺序。
'Trial.txt': enter image description here
但是当我尝试使用 genfromtxt 读入 python 时,它不起作用。: 示例:
read_array = np.genfromtxt('Trial.txt',dtype=Clt_data_dtype)
输出:
('READ_ARRAY_shape :', (2L,))
('READ_ARRAY :', array([((nan, nan), nan, nan), ((nan, nan), nan, nan)], 'V32'))
希望有人可以指导我,并提前感谢您的任何意见
还要注意我不能使用 pandas,因为我只运行 numpy 兼容程序
【问题讨论】:
trial.txt
足够小,您可以将其复制粘贴到问题中。我们比图像更喜欢它。你用了什么savetxt
命令?
【参考方案1】:
In [17]: Cord_dtype = np.dtype([('X', np.float64), ('Y', np.float64)])
...: Clt_data_dtype=np.dtype([('Coord', Cord_dtype),('Angle', np.float64), ('Length', np.float64)])
创建你的数组:
In [18]: arr = np.array([ [ ((10, 10), 20, 300.), ((20, 20), 20, 300.) ],
...: [((30, 30), 30, 300.), ((40, 40), 40, 300.)] ], dtype=Clt_data_dtype)
...:
...:
In [19]: arr
Out[19]:
array([[((10., 10.), 20., 300.), ((20., 20.), 20., 300.)],
[((30., 30.), 30., 300.), ((40., 40.), 40., 300.)]],
dtype=[('Coord', [('X', '<f8'), ('Y', '<f8')]), ('Angle', '<f8'), ('Length', '<f8')])
In [20]: arr.shape
Out[20]: (2, 2)
genfromtxt
可以从csv
样式文件重新创建它,例如:
In [21]: txt = """10 10 20 300.
...: 20 20 20 300.
...: 30 30 30 300.
...: 40 40 40 300.
...: """
In [22]: np.genfromtxt(txt.splitlines(), dtype=Clt_data_dtype)
Out[22]:
array([((10., 10.), 20., 300.), ((20., 20.), 20., 300.),
((30., 30.), 30., 300.), ((40., 40.), 40., 300.)],
dtype=[('Coord', [('X', '<f8'), ('Y', '<f8')]), ('Angle', '<f8'), ('Length', '<f8')])
在真正的csv
时尚中,它只包含数字的行和列。它没有您的img
显示的分隔符和()
。可以解析您的图像并创建文件,但 csv
阅读器无法处理。
【讨论】:
以上是关于将文本文件读入结构化 2D numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章