后台:我正在尝试使用cKDtree
函数在shapefile上运行最近的邻居,该文件具有201条记录,其中纬度/经度与8760小时的时间序列数据集(总小时数)在一年以内)。我收到了一个错误,自然我查了一下。我发现这个:scipy.spatial ValueError: "x must consist of vectors of length %d but has shape %s"这是同样的错误,但我无法理解这个错误是如何解决的。
工作流程我拉了x& y坐标出shapefile并将它们存储在名为x_vector
和y_vector
的单独数组中。 8760数据是hdf5文件。我使用h5_coords = np.vstack([meta['latitude'], meta['longitude']]).T
拉出了坐标。
现在我尝试运行kdtree,
# Run the kdtree to match nearest values
tree = cKDTree(np.vstack([x_vector, y_vector]))
kdtree_indices = tree.query(h5_coords)[1]
但是会导致同样的回溯错误。
追踪错误:
Traceback (most recent call last):
File "meera_extract.py", line 45, in <module>
kdtree_indices = tree.query(h5_coords)[1]
File "scipy/spatial/ckdtree.pyx", line 618, in scipy.spatial.ckdtree.cKDTree.query (scipy/spatial/ckdtree.cxx:6996)
ValueError: x must consist of vectors of length 201 but has shape (1, 389880)
帮帮我,stackoverflow。你是我唯一的希望。
答案 0 :(得分:2)
所以我似乎需要了解indexof()
&amp;的差异。 vstack
并使用转置即column_stack
。如果有人有同样的问题,那么我改变了.T
的工作。希望如果其他人遇到这个问题会有所帮助。非常感谢社区的评论,以帮助解决这个问题!
我更改了cKDtree
坐标从hdf5
转移到vstack
并删除转置column_stack
的方式。
.T
我没有尝试在树中添加点,而是创建了一个新变量来保存它们:
# Get coordinates of HDF5 file
h5_coords = np.column_stack([meta['latitude'], meta['longitude']])
然后我没有任何错误地运行了kdtree。
# combine x and y
vector_pnts = np.column_stack([x_vector, y_vector])