我在python中工作并尝试从多个LAZ文件中获取x,y,z坐标并将它们放入一个可用于其他分析的数组中。我正在尝试自动执行此任务,因为我有大约2000个文件转换为一个甚至10个数组。示例涉及两个文件,但我无法使循环正常工作。我想我没有正确命名我的变量。下面是我一直在尝试编写的示例代码(请注意,我对编程非常新,所以如果这是一个可怕的代码,请道歉。)
import numpy as np
from laspy.file import File
import glob as glob
# create list of vegetation files to be opened
VegList = sorted(glob.glob('/Users/sophiathompson/Desktop/copys/Clips/*.las'))
for f in VegList:
print(f)
Veg = File(filename = f, mode = "r") # Open the file
points = Veg.get_points() # Grab all of the points from the file.
print points #this is a check that the number of rows changes at the end
print ("array shape:")
print points.shape
VegListCoords = np.vstack((Veg.x, Veg.y, Veg.z)).transpose()
print VegListCoords
此块读取两个文件,但使用文件列表中第二个文件的结果填充VegListCoords
。我需要它来保存两者的记录。如果这是一种可怕的方式,我会对新的方式持开放态度。
答案 0 :(得分:1)
您可以通过分配上次打开的文件中的值
来覆盖VegListCoords
相反,在开头初始化:
VegListCoords = []
而是:
VegListCoords.append(np.vstack((Veg.x, Veg.y, Veg.z)).transpose())
如果你想在最后的一个numpy数组中使用它们,请使用np.concatenate