根据所需的内容,根据任一变量组织数据以访问信息



我得到了一个元素列表及其各自的节点列表,我想切换查找它们的方式。我想要一个节点列表及其各自元素的列表。

例:

Have
E    N
1    1 2 3
2    2 3 4
3    1 4
Desired
N    E
1    1 3
2    1 2
3    1 2
4    2 3

我有一个嵌套的循环解决方案。

# known data
elements = [
[],  # No element 0
[1, 2, 3],
[2, 3, 4],
[1, 4],
]
max_element = 3
max_node = 4
# truth
truth_nodes = [
[],
[1, 3],
[1, 2],
[1, 2],
[2, 3],
]
# current algorithm
nodes = [[] for n in range(max_node+1)]
for node in range(1, max_node + 1):
for element in range(1, max_element + 1):
if node in elements[element]:
nodes[node].append(element)

Python中是否有其他工具,无论是NumPy,Pandas还是其他工具,都可以加速超过300,000个元素的速度?如果这是一个通用算法,它的名字是什么和/或我如何找到它?

编辑:这是图形算法吗?

我可以想象上面的节点以及我的元素的顶点,并使用 NetworkX 制作无向图。那么我会使用连接的组件算法吗?

我最终使用了一个pandas DataFrame,其中有node列和element列,并且属于单个元素的每对单个节点都有一行。

Node Element
1    1
2    1
3    1
2    2
3    2
4    2
1    3
4    3

我相信这是遵循Hadley Wickham的Tidy Data。然后我可以通过布尔索引df[df.node==1]调用给定的node,同样,对于一个元素,df[df.element==3]

我仍然不确定这是否是一种图形算法,但是以这种方式组织我的数据使我能够继续处理其余的问题。

最新更新