隣接リストから networkx グラフを作成しようとしています。私は現在、遅い次のことを行っています。私は scipy.sparse 行列オプションを調べましたが、私が作業しているものと同じ形式のものはなかったと言えます。adj の各項目が異なる長さを持つことができるという事実によって複雑になります。
o3dmesh.adjacency list はセットのリストを返します。セット adjacency_list[i] には、頂点 i の隣接する頂点のインデックスが含まれます。行インデックス、列インデックスはなく、絶対インデックスのみです。
import open3d as o3d
import networkx as nx
import scipy
def adj_matrix(adj):
n = len(adj)
g= scipy.sparse.dok_matrix((n,n), int)
for num, i in enumerate(adj):
g[num, list(i)] = 1
return g
o3dmesh = mesh = o3d.io.read_triangle_mesh(path)
adj = o3dmesh.adjacency_list
adj = adj_matrix(adj)
graph = nx.from_scipy_sparse_matrix(adj)