创建一个代表网络连接的 Numpy 数组
Create a Numpy array representing connections in a network
假设我有一个描述节点间网络链接的数组:
array([[ 1., 2.],
[ 2., 3.],
[ 3., 4.]])
这将是一个线性 4 节点网络,具有从节点 1 到节点 2 的链接,依此类推..
将此信息转换为以下格式的数组的最佳方法是什么?
array([[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.],
[ 0., 0., 0., 0.]])
然后列号代表 "to nodes",行号代表 "from nodes"。
另一个例子是:
array([[ 1., 2.],
[ 2., 3.],
[ 2., 4.]])
给予
array([[ 0., 1., 0., 0.],
[ 0., 0., 1., 1.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
节点 ID 应该是整数。另外numpy中的行和列都是从零开始编号的,所以我们要在每个维度上减一:
import numpy as np
conns = np.array([[ 1, 2],
[ 2, 3],
[ 3, 4]])
net = np.zeros((conns.max(), conns.max()), dtype=int)
# two possibilities:
# if you need the number of connections:
for conn in conns:
net[conn[0]-1, conn[1]-1] += 1
# if you just need a 1 for existing connection(s):
net[conns[:,0]-1, conns[:,1]-1] = 1
假设我有一个描述节点间网络链接的数组:
array([[ 1., 2.],
[ 2., 3.],
[ 3., 4.]])
这将是一个线性 4 节点网络,具有从节点 1 到节点 2 的链接,依此类推..
将此信息转换为以下格式的数组的最佳方法是什么?
array([[ 0., 1., 0., 0.],
[ 0., 0., 1., 0.],
[ 0., 0., 0., 1.],
[ 0., 0., 0., 0.]])
然后列号代表 "to nodes",行号代表 "from nodes"。
另一个例子是:
array([[ 1., 2.],
[ 2., 3.],
[ 2., 4.]])
给予
array([[ 0., 1., 0., 0.],
[ 0., 0., 1., 1.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
节点 ID 应该是整数。另外numpy中的行和列都是从零开始编号的,所以我们要在每个维度上减一:
import numpy as np
conns = np.array([[ 1, 2],
[ 2, 3],
[ 3, 4]])
net = np.zeros((conns.max(), conns.max()), dtype=int)
# two possibilities:
# if you need the number of connections:
for conn in conns:
net[conn[0]-1, conn[1]-1] += 1
# if you just need a 1 for existing connection(s):
net[conns[:,0]-1, conns[:,1]-1] = 1