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

2024-09-29 05:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带边列表的图G

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

我要做的是遍历这些边并创建2D numpy数组G15, G16, ... , G67,其中数组名对应于这些边。你知道吗

我该怎么做?你知道吗


Tags: numpy列表数组edges数组名g15g16g67
2条回答

听起来你想做些

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实践。你知道吗

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

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

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

解决方案的其余部分取决于您希望数组采用什么形式,即您希望如何访问它们-字典、元组列表等。?你知道吗

相关问题 更多 >