【发布时间】:2021-03-02 07:30:21
【问题描述】:
让我们考虑一下,有两个数组 I 和 J 确定邻居对:
I = np.array([0, 0, 1, 2, 2, 3])
J = np.array([1, 2, 0, 0, 3, 2])
这意味着元素0 有两个邻居1 和2。元素1 只有0 作为邻居等等。
创建所有相邻三元组I'、J'、K' 的数组的最有效方法是什么,这样j 是i 的邻居,而k 是j 的邻居,因为条件i、j和k是不同的元素(i != j != k)?
Ip = np.array([0, 0, 2, 3])
Jp = np.array([2, 2, 0, 2])
Kp = np.array([0, 3, 1, 0])
当然,一种方法是遍历每个元素。有没有更高效的算法? (使用 10-5 亿个元素)
【问题讨论】:
-
你为什么使用数组?这是一个图形问题:使用
networkx或其他图形包。让包担心你的效率。 -
请明确说明您的用例。你需要生成所有可能的三元组吗?这是按需服务吗?值得记忆吗?
-
@Prune 谢谢,看看networkx包。但不确定所有可能的三元组是什么意思。有没有办法部分得到它?
-
您说您要创建三元组,其中中间节点连接到每个端节点。但是,您没有具体说明如何决定生成哪些三元组。了解程序规范对于选择设计和实现很重要。
-
一百万行的邻接矩阵...
标签: python python-3.x numpy tree