【发布时间】:2020-01-17 00:28:19
【问题描述】:
所以我有一个巨大的 .txt 文件,其中包含大约 4 000 000 个坐标,格式如下:
315987 5587999 718.80
315988 5587999 718.87
315989 5587999 719.03
315990 5587999 718.94
315991 5587999 718.97
...
所以我现在的任务是使用 python 脚本从这个 txt 文件中读取这些坐标,并将每个轴的数据存储在一个元组(np 数组)中,这样我就可以在元组上使用像 np.flatten 这样的方法。
对于这个任务,我在 stackoverflow 上找到了很多答案,但不知何故有点令人困惑,我无法按照自己的意愿实现它。
这是我的代码:
def get_stl():
with open('test.txt') as f:
for line in f:
x, y, z = (float(a) for a in line.split())
X, Y = np.meshgrid(x, y, z)
Z = z;
return X, Y, Z
x, y, z = get_stl()
xyz = np.zeros(shape=(x.size, 3))
xyz[:, 0] = x.flatten()
xyz[:, 1] = y.flatten()
xyz[:, 2] = z.flatten()
所以很明显z.flatten() 无法执行,因为我没有将 z 读为 np.array。
我的问题是如何正确读取那个大的 txt.file,尤其是 z 坐标。
谢谢!
编辑:
我不想使用 CSV,因为它会占用内存
【问题讨论】:
-
将您的 txt 视为 csv 文件(以空格作为分隔符),然后再次检查 SO。或者你可以检查一下:riptutorial.com/numpy/example/22990/reading-csv-files
-
对于元组(np-array)中的每个轴,所以我可以在元组上使用 np.flatten 之类的方法。 你能扩展一下吗,我不确定我理解正确。
-
@AMC 如你所见,我在每个元组(最后三行)上使用 np 方法
flatten() -
@SamuelDressel 我的意思是你想做什么,你想要的输出是什么,它有什么用?
标签: python arrays numpy tuples