python - 将文本文件读入结构化 2D numpy 数组
问题描述
我有一个结构化的 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
i 能够将数组保存到保持相同形状和顺序的 txt 文件中。
'Trial.txt' : 在此处输入图片描述
但是当我尝试使用 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 兼容程序
解决方案
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
阅读器无法处理。
推荐阅读
- java - Java POI - 将工作簿转换为文件
- excel - Excel VBA范围。地址最大长度
- javascript - 可折叠只能工作一次(不是 BOOTSTRAP)
- angular - 如果您在单击之前没有离开该字段,则角度表单不会验证
- flutter - 当我离开页面时计时器没有释放
- html - 像背景 CSS 一样透明的表格
- node.js - 使用 jest 在另一个函数中模拟函数
- web-applications - 清洁架构:我应该为每个 Http 端点都有一个用例吗?
- python - 如何使用随机文本获取标签的高度--kivymd
- google-sheets - 谷歌表格:避免#DIV/0!在 ArrayFormula()