gpt4 book ai didi

python - 标签矩阵到邻接矩阵

转载 作者:行者123 更新时间:2023-11-30 23:18:48 25 4
gpt4 key购买 nike

只是想知道是否有现成的函数可以执行以下操作;给定一个矩阵 X,在每个条目中保存标签(可以假设为 0 到 N 的整数),例如:

X = [[0 1 1 2 2 3 3 3],
[0 1 1 2 2 3 3 4],
[0 1 5 5 5 5 3 4]]

我想要它的邻接矩阵 G,即如果 i,j 在 X 中相邻,则 G[i,j] = 1,否则为 0。

例如 G[1,2] = 1,因为 1,2 在 (X[0,2],X[0,3])、(X[1,2],X[1,3] 中相邻]) 等等..

最简单的解决方案是循环遍历所有条目并检查其邻居,但出于性能原因我宁愿避免循环。

最佳答案

您可以使用花式索引直接从 X 数组中分配 G 的值:

import numpy as np

X = np.array([[0,1,1,2,2,3,3,3],
[0,1,1,2,2,3,3,4],
[0,1,5,5,5,5,3,4]])
G = np.zeros([X.max() + 1]*2)

# left-right pairs
G[X[:, :-1], X[:, 1:]] = 1
# right-left pairs
G[X[:, 1:], X[:, :-1]] = 1
# top-bottom pairs
G[X[:-1, :], X[1:, :]] = 1
# bottom-top pairs
G[X[1:, :], X[:-1, :]] = 1

print(G)
#array([[ 1., 1., 0., 0., 0., 0.],
# [ 1., 1., 1., 0., 0., 1.],
# [ 0., 1., 1., 1., 0., 1.],
# [ 0., 0., 1., 1., 1., 1.],
# [ 0., 0., 0., 1., 1., 0.],
# [ 0., 1., 1., 1., 0., 1.]])

关于python - 标签矩阵到邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26486898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com