如何在矩阵和边缘之间创建python对应关系

时间:2015-10-23 17:46:54

标签: python numpy

我有一个带有边缘列表的图表

G.edges()=[(1, 5), (1, 6), (2, 5), (3, 4), (3, 6), (4, 5), (4, 7), (6, 7)

我想要做的是迭代每个边缘并创建2D numpy数组G15, G16, ... , G67,其中数组名称对应于边缘。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

听起来你想要做像

这样的事情
i, j = 1,3
$G{i}{j}=np.array(....)

以后要么做:

G13[:,3]= ...
or
$G{i}{j}[0,1]=...

有些语言允许您创建这样的变量名称。早期基础可能已经这样做了。但Python并不是其中之一。以编程方式构造变量名是一种特殊的方法。

在Python中,您可以在列表和词典中收集对象,例如数组,例如

[np.array(...) for i,j in G.edges()]

{(i,j):np.array(...) for i,j in G.edges()}

{'G%i%j'%(i,j): np.array(...) for i,j in G.edges()}

有很多方法可以将这样的字典添加到本地命名空间(也就是字典),但这是边缘可怜的Python实践。

通过在列表或字典中收集数组,可以轻松地遍历它们或单独引用它们。将edges(您的元组)与数组(或其他Python对象)相关联有多种方法,但全局变量名称不是很好(可能但不是Pythonic)。

答案 1 :(得分:0)

您可以列出所需的数组名称,如下所示:

arrayNames = ["G"+str(n)+str(m) for (n, m) in G.edges()]

解决方案的其余部分取决于您希望数组的形式,即您希望如何访问它们 - 字典,元组列表等?