我有一个带有边缘列表的图表
G.edges()=[(1, 5), (1, 6), (2, 5), (3, 4), (3, 6), (4, 5), (4, 7), (6, 7)
我想要做的是迭代每个边缘并创建2D numpy数组G15, G16, ... , G67
,其中数组名称对应于边缘。
我该怎么做?
答案 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()]
解决方案的其余部分取决于您希望数组的形式,即您希望如何访问它们 - 字典,元组列表等?