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

如何在矩阵和边之间创建python对应关系,python,numpy,Python,Numpy,我有一个带边列表的图G G.edges()=[(1, 5), (1, 6), (2, 5), (3, 4), (3, 6), (4, 5), (4, 7), (6, 7) 我要做的是在这些边上迭代,并创建2D numpy数组G15,G16,G67其中数组名称对应于边 如何执行此操作?您可以列出所需的数组名称,如下所示: arrayNames = ["G"+str(n)+str(m) for (n, m) in G.edges()] 该解决方案的其余部分取决于您希望数组采用何种形式,即您希望如

我有一个带边列表的图G

G.edges()=[(1, 5), (1, 6), (2, 5), (3, 4), (3, 6), (4, 5), (4, 7), (6, 7)
我要做的是在这些边上迭代,并创建2D numpy数组
G15,G16,G67
其中数组名称对应于边


如何执行此操作?

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

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

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

听起来您希望这样做

i, j = 1,3
$G{i}{j}=np.array(....)
目的是在以后做:

G13[:,3]= ...
or
$G{i}{j}[0,1]=...
有一些语言允许您创建这样的变量名。早期的Basic可能已经做到了这一点。但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实践


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

G是NetworkX图吗?还有,数组是用来做什么的?团势函数。G是networkX图形。这不起作用,因为我的G15和G16是numpy数组而不是字符串。换句话说,我怎么能有一个接受I和j并返回名称为Gij的numpy数组的函数呢?我想你把变量赋值和命名混淆了。我们不会用Python命名东西。