我目前的问题是以下。我有一个有向的1模式边沿列表,代表在特定年份中参与联合项目的成对演员,可能看起来像:
projektleader projectpartner year
A B 2005
A C 2000
B A 2002
... ... ...
Run Code Online (Sandbox Code Playgroud)
现在我只需要一个特定年份的子集。并非所有参与者都在这一年活跃,因此子集的规模有所不同。对于下面的网络分析,我需要一个加权有向的邻接矩阵,因此我使用[network package]的选项来创建它。我首先将其加载为网络对象,然后将其转换为邻接矩阵。
grants_00 <- subset(grants, (year_grant=2000), select = c(projectpartner, projectleader))
nw_00 <- network(grants_08to11[,1:2], matrix="edgelist", directed=TRUE)
grants_00.adj <- as.matrix(nw_00, matrix.type = "adjacency")
Run Code Online (Sandbox Code Playgroud)
结果矩阵看起来像
A B C E ...
A 0 1 1 0
B 1 0 0 0
...
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好。我的问题现在是:为了进行进一步的分析,我打算每年以相同的维度和顺序使用邻接矩阵。这意味着来自初始数据集的所有参与者必须是对应年份矩阵的行名和列名,但是矩阵只应包含该特定年份的观察对。我希望我的问题很清楚。我感谢任何建设性的解决方案。
我的想法是ATM:创建初始数据集和简化数据集的矩阵。然后,将所有矩阵值都设置为零。然后我以某种方式将其与简化后的矩阵匹配,并在正确的行和列中使用正确的值填充它。不幸的是,我不知道这怎么可能。
有谁知道如何解决这个问题?
我想在MATLAB中创建一个随机邻接矩阵,使得权重的总和等于边数.最后找到拉普拉斯矩阵
L = diag(sum(A)) - A
Run Code Online (Sandbox Code Playgroud)
然后绘制图形.有没有办法这样做?提前致谢.
如何用邻接矩阵中的权重替换邻接矩阵中的1的值?例如:
adjacent_matrix = [1 0 0 1; 0 0 1 1; 1 0 1 0; 0 1 1 0 ]
weight_matrix = [ 2 4 6 2; 4 5 1 3]
Run Code Online (Sandbox Code Playgroud)
最终矩阵应如下所示: [2 0 0 4; 0 0 6 2; 4 0 5 0; 0 1 3 0]
public int dijkstra(){
boolean[] visited = new boolean[gSize];
int src = 1;
int dest = 1;
int[] distance = new int[5];
int[] part = new int[5];
int min;
int nextNode = 0;
for(int i = 0; i < 5; i++)
{
visited[i] = false;
part[i] = 0;
for(int j = 0; j < 5; j++)
if(arr[i][j] == -1)
arr[i][j] = 999; //gives it a high value to ignore
}
distance = arr[src];
distance[src] = 0;
visited[src] = true;
for(int i …Run Code Online (Sandbox Code Playgroud) 假设我有以下矩阵/数组:
array([[0, 0, 1, 1, 1],
[0, 0, 1, 0, 1],
[1, 1, 0, 1, 1],
[1, 0, 1, 0, 0],
[1, 1, 1, 0, 0]])
Run Code Online (Sandbox Code Playgroud)
我想应用以下排列:
1 -> 5
2 -> 4
Run Code Online (Sandbox Code Playgroud)
结果应该是:
array([[1, 1, 1, 0, 0],
[1, 0, 1, 0, 0],
[1, 1, 0, 1, 1],
[0, 0, 1, 0, 1],
[0, 0, 1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)
现在,一种非常幼稚(且内存成本高)的方法可能是:
a2 = deepcopy(a1)
a2[0,:] = a1[4,:]
a2[4,:] = a1[0,:]
a = deepcopy(a2)
a2[:,0] = a[:,4]
a2[:,4] = a[:,0]
a3 = …Run Code Online (Sandbox Code Playgroud) 我有以下字典:
g = {
'A': ['A', 'B', 'C'],
'B': ['A', 'C', 'E'],
'C': ['A', 'B', 'D'],
'D': ['C','E'],
'E': ['B','D']
}
Run Code Online (Sandbox Code Playgroud)
它实现了一个图,每个列表包含图顶点的邻居(字典键是顶点本身)。我很麻烦,我想不出一种从邻居列表中获取图邻接矩阵的方法,这可能很简单,但是我对python还是陌生的,希望有人能帮助我!我正在使用Python 3.5
我需要生成以下矩阵:
我在Python中的Adjacency Matrix中表示网站用户行为时遇到问题.我想分析43个不同网站之间的用户交互,以查看哪些网站一起使用.
给定的数据集具有大约13.000.000行,具有以下结构:
user website
id1 web1
id1 web2
id1 web2
id2 web1
id2 web2
id3 web3
id3 web2
Run Code Online (Sandbox Code Playgroud)
我想想象一下Adjacency Matrix中网站之间的互动,如下所示:
web1 web2 web3
web1 2 2 0
web2 2 4 1
web3 0 1 1
Run Code Online (Sandbox Code Playgroud)
我很高兴任何建议
我正在尝试将数据框从在线论坛转换为社交网络,但是我不知道如何将数据转换为网络分析所需的邻接矩阵/边列表。
我的代码如下:
library(igraph)
graph.data.2002 <- as.matrix(data.2002[,2:3])
g.2002 <- graph.data.frame(graph.data.2002, directed=FALSE)
plot(g.2002, vertex.size = 1, vertex.label=NA)
Run Code Online (Sandbox Code Playgroud)
我正在使用 R 进行分析。目前的问题是作者之间是通过ThreadID联系起来的,但是在进行网络分析时,它包含了ThreadID作为一个节点。理想情况下,我想要一个邻接矩阵/边缘列表,如果作者与同一线程上的所有作者交互,则显示 1。
(第一次发帖,如果有什么遗漏/不正确的地方,请告诉我)
目前数据如下:
ThreadID AuthorID
659289 193537
432269 136196
572531 170305
230003 32359
459059 47875
635953 181593
235116 51993
Run Code Online (Sandbox Code Playgroud) 我有一个邻接矩阵A 和一个定义每个节点坐标的数组:
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
%matplotlib inline
Import adjacency matrix A[i,j]
A = np.matrix([[0, 1, 1, 0, 0, 1, 0],
[0, 0, 1, 1, 0, 0, 0],
[0, 0, 0, 1, 1, 1, 0],
[0, 0, 0, 0, 1, 1, 0],
[0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 0, 0]])
## Import node coordinates
xy = np.array([[0, …Run Code Online (Sandbox Code Playgroud) adjacency-matrix ×10
matrix ×5
python ×3
r ×3
algorithm ×2
graph ×2
matlab ×2
numpy ×2
bigdata ×1
dictionary ×1
dijkstra ×1
edges ×1
java ×1
networking ×1
networkx ×1
nodes ×1
permutation ×1
python-2.7 ×1
python-3.x ×1
random ×1
sna ×1