【发布时间】:2020-07-31 11:27:51
【问题描述】:
我的算法输出描述 3D 空间 (x, y, z) 中对象的一组顶点。在这种情况下,有两个对象:
verts =
[[0.1 1. 1. ] [1. 1. 0.1] [1. 0.1 1. ] [1. 1. 1.9] [1. 1.9 1. ]
[1.9 1. 1. ] [7.1 8. 8. ] [8. 8. 7.1] [8. 7.1 8. ] [8. 8. 8.9]
[8. 8.9 8. ] [8.9 8. 8. ]]
有两个四面体,一个以 (1, 1, 1) 为中心,另一个以 (8, 8, 8) 为中心。我的目标是使用广度优先搜索来识别对象是独立的,然后对每个对象进行分类。我无法为我的算法获取正确格式的数据。
相反,我打算使用 networkx 模块,特别是使用 Graph 类,它将 ndarrays 作为输入。我试过了:
import networkx as nx
import numpy as np
graph = Graph(verts)
for idx, graph in enumerate(nx.connected_components(graph)):
print("Graph ",idx, " in ", graph,'\n\n',file=open("output.txt","a"))
但是,我无法创建图表。相反,我得到了错误:
"Input is not a correct numpy matrix or array.")
networkx.exception.NetworkXError: Input is not a correct numpy matrix or array.
这让我很困惑,因为 verts 的类型 = numpy.ndarray。
我愿意使用 networkx 来完成这项任务,或者开发一些其他策略。此外,请让我知道是否有任何编辑可以使这篇文章更清晰。
编辑:可能有帮助的一件事是另一个输出,面孔。这些“通过从顶点引用顶点索引来定义三角形面。”我相信这些可以用来“连接”或从顶点到顶点画线,最终创建字典。
faces =
[[ 2 1 0] [ 0 3 2] [ 1 4 0] [ 0 4 3] [ 5 1 2] [ 3 5 2]
[ 5 4 1] [ 4 5 3] [ 8 7 6] [ 6 9 8] [ 7 10 6] [ 6 10 9]
[11 7 8] [ 9 11 8] [11 10 7] [10 11 9]]
已经提出了一种方法,它适用于这组数据。但是,它并不适用于所有人。此编辑会上传一组新数据。
verts =
[[0.1 1. 1. ] [1. 1. 0.1] [1. 0.1 1. ] [1. 1. 1.9] [1. 1.9 1. ] [1.9 1. 1. ]
[3.1 1. 4. ] [4. 1. 3.1] [4. 0.1 4. ] [4. 1. 4.9] [4. 1.9 4. ] [5. 1. 3.1]
[5. 0.1 4. ] [5. 1. 4.9] [5. 1.9 4. ] [5.9 1. 4. ] [7.1 8. 8. ]
[8. 8. 7.1] [8. 7.1 8. ] [8. 8. 8.9] [8. 8.9 8. ] [9. 8. 7.1]
[9. 7.1 8. ] [9. 8. 8.9] [9. 8.9 8. ] [9.9 8. 8. ]]
它看起来像这样。
【问题讨论】:
标签: python graph networkx breadth-first-search