标签: adjacency-matrix

MATLAB识别3D图像中的邻接区域

我有一个3D图像,分为连续区域,每个体素具有相同的值.分配给该区域的值对于该区域是唯一的,并用作标签.下面的示例图片描述了2D案例:

     1 1 1 1 2 2 2
     1 1 1 2 2 2 3
Im = 1 4 1 2 2 3 3
     4 4 4 4 3 3 3
     4 4 4 4 3 3 3
Run Code Online (Sandbox Code Playgroud)

我想创建一个描述这些区域之间的相互关系的图表.在上面的例子中,这将是:

    0 1 0 1
A = 1 0 1 1
    0 1 0 1
    1 1 1 0
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个快速的解决方案来在MATLAB中为大型3D图像执行此操作.我提出了一个迭代所有区域的解决方案,这需要0.05s每次迭代 - 不幸的是,对于具有32'000个区域的图像,这将花费半个多小时.现在有人有更优雅的方式吗?我发布了下面的当前算法:

labels = unique(Im); % assuming labels go continuously from 1 to N
A = zeros(labels);

for ii=labels
  % …
Run Code Online (Sandbox Code Playgroud)

performance matlab image-processing vectorization adjacency-matrix

5
推荐指数
1
解决办法
268
查看次数

如何使用恒定的行和列总和创建1和0的对称矩阵

我试图在限制条件下找到一个优雅的算法来创建1和0的N×N矩阵:

  • 每行和每列必须总和为Q(可自由选取)
  • 对角线必须为0
  • 矩阵必须是对称的.

矩阵不是严格必要的随机(随机和非随机解决方案都很有趣),因此对于Q均匀,只需使每一行成为矢量的循环移位

[0 1 1 0 ... 0 0 0 ... 0 1 1](Q = 4)

是一个有效的解决方案

但是,如何为Q奇做这个?或者如何为Q偶然做,但是以随机方式?

对于那些好奇的人,我试图在抽象网络上测试一些现象.

如果以前已经回答过这个问题我很抱歉,但我找不到任何问题都有对称限制,这似乎使它变得更加复杂.我没有证明这样的矩阵总是存在,但我确实这样认为.

algorithm graph adjacency-matrix magic-square

5
推荐指数
1
解决办法
903
查看次数

空间权重:非对称邻接矩阵?

我正在创建一个邻接矩阵来在 R 中进行空间分析。数据都是美国大陆的县。我从美国人口普查老虎文件中获取了各县的空间多边形。

我能够创建邻居列表,并且它是对称的。但是当我将其转换为邻接矩阵时,它不是对称的。这是一个问题,因为我的目标是使用 运行空间自逻辑模型ngspatial::autologistic,并且出现错误,指出我必须提供对称二元邻接矩阵。

这是我创建邻接矩阵的 R 代码:

us<-readShapeSpatial("County_2010Census_DP1.shp")
#Trim out counties outside of continental US
us2<-us[!substr(us$GEOID10,1,2)%in%c('02','60','66','78','15','72'),]
us2.nb = poly2nb(us2)
is.symmetric.nb(us2.nb) #Comes out true
us2.adj = nb2mat(us2.nb, style="B",zero.policy=F)
isSymmetric(us2.adj) #comes out false
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我可以splogit毫无问题地使用这个邻接矩阵。我不是空间分析方面的专家,所以我不能说我知道这些命令中发生了什么。

gis r spatial adjacency-matrix

5
推荐指数
1
解决办法
1700
查看次数

从csv数据集创建python中的邻接矩阵

我的数据格式如下:

eventid    mnbr
20         1
26         1
12         2
14         2
15         3
14         3
10         3
Run Code Online (Sandbox Code Playgroud)

eventid是一个成员参加数据的事件被表示为一个小组,因此您可以看到每个成员参加多个活动,多个成员可以参加同一个活动.我的目标是创建一个邻接矩阵,显示:

 mnbr  1    2    3
 1     1    0    0
 2     0    1    1
 3     0    1    1
Run Code Online (Sandbox Code Playgroud)

只要两名成员参加同一活动,就会有1.我成功地将csv文件的列读入2个独立的1D numpy数组.然而,在这里,我不确定如何继续.如何使用第2列创建矩阵,以及如何使用第1列填充值?我知道我没有发布任何代码,并且不期望在这方面有任何解决方案,但会非常感谢如何以有效的方式解决问题.我有大约300万个观测值,因此创建太多外部变量会有问题.提前致谢.我收到一条通知,说我的问题可能是重复的,但我的问题是解析数据而不是创建邻接矩阵.

python csv numpy adjacency-matrix

5
推荐指数
1
解决办法
1364
查看次数

除了邻接表或邻接矩阵之外,还有其他数据结构来表示图吗?

我正在寻找用于表示图形的不同数据结构,我遇到了 Nvidia CUDA Toolkit,并在 source_indices、destination_offsets 的帮助下找到了表示图形的新方法。

被这种创新的图形表示所吸引,我寻找了其他表示图形的方法。但没有发现任何新东西。

我想知道除了邻接矩阵或列表之外,是否还有其他方式来表示图...

graph adjacency-list adjacency-matrix graph-algorithm data-structures

5
推荐指数
1
解决办法
1650
查看次数

哪种图算法更喜欢邻接矩阵,为什么?

我听说大多数图算法(但不是全部)都使用邻接表。我只是想知道什么算法更喜欢邻接矩阵,为什么?

\n

到目前为止,我\xe2\x80\x99ve发现Floyd Warshall使用邻接矩阵。

\n

graph adjacency-list adjacency-matrix data-structures

5
推荐指数
1
解决办法
2212
查看次数

通过交错复制 3D 阵列的页面构建邻接矩阵

背景

我正在尝试建模一个可以在每个时间步更改其配置的系统。各种配置是预先知道的,不依赖于时间步长。在某些配置之间允许转换,而在其他配置之间禁止转换。目标是构建一个跨越多个时间步长的允许转换的邻接矩阵。

环境

A成为s*s*k表示允许转换的逻辑矩阵,并A1...Ak表示 的页面/切片A

A1 = A(:,:,1); A2 = A(:,:,2); ... Ak = A(:,:,k);
Run Code Online (Sandbox Code Playgroud)

第三维的含义是转换需要多少时间步,例如:如果A(1,3,2)非零,则表示状态#1可以转换为状态#3,这将需要2时间步。

B成为我们想要构建的邻接矩阵,它表示nt时间步长。的形状B应该是示意性的(以块矩阵表示法):

A1 = A(:,:,1); A2 = A(:,:,2); ... Ak = A(:,:,k);
Run Code Online (Sandbox Code Playgroud)

其中主块对角线由nt0 个块组成,并且 的切片A逐渐“向右推”直到“时间用完”, 的切片A最终“超出”了B? 表明不可能有更多的转换。由于Bnt*nt s*s块组成,因此其大小为(nt*s)×(nt*s)

问题:给定Aand nt,我们如何B以最节省 CPU 和内存的方式构造?

笔记 …

performance matlab graph-theory matrix adjacency-matrix

5
推荐指数
1
解决办法
74
查看次数

将 Pandas 数据帧转换为邻接矩阵

我有一个 Pandas 数据框(930 行 \xc3\x97 50 列),如下所示:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
指数关键词A关键词B关键字 c
第1页131
第2页402
第3页011
\n
\n

我想将其转换为邻接矩阵/加权图,其中每个关键字都是一个节点。权重是每个关键字之间的组合之和。

\n

结果将是这样的:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
关键词A关键词B关键词C
关键词A038
关键词B304
关键词C840
\n

python adjacency-matrix pandas

5
推荐指数
1
解决办法
1192
查看次数

Pytorch几何稀疏邻接矩阵到边缘索引张量

我的数据对象有data.adj_t参数,给我稀疏邻接矩阵。我怎样才能从中得到edge_index尺寸张量?[2, num_edges]

python graph adjacency-matrix pytorch pytorch-geometric

5
推荐指数
1
解决办法
6890
查看次数

以 COO 格式构建图连接矩阵

我在处理图形数据时面临以下子任务:

我需要为具有来自“边界”索引数组的多个完全连接组件的图构造 COO 格式的图连接矩阵。

举个例子,给定数组

borders = [0, 2, 5]
Run Code Online (Sandbox Code Playgroud)

由此产生的 COO 矩阵应该是

coo_matrix = [[0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4],
              [0, 1, 0, 1, 2, 3, 4, 2, 3, 4, 2, 3, 4]].
Run Code Online (Sandbox Code Playgroud)

也就是说,borders数组包含应形成完全连接的子图的节点范围(包括起始索引,排除结束索引)。

我想出了以下算法,但我怀疑性能可以提高:

import numpy as np

def get_coo(borders):

    edge_list = []
    for s, e in zip(borders, borders[1:]):
        
        # create fully-connected subgraph
        arr = np.arange(s, e)
        t = np.array(np.meshgrid(arr, arr)).T.reshape(-1, 2)
        t = t.T

        edge_list.append(t) …
Run Code Online (Sandbox Code Playgroud)

python numpy graph adjacency-matrix

5
推荐指数
1
解决办法
2569
查看次数