scipy 无法在SageMath中将numpy数组转换为图形

abithluo  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(128)

按照网站上的说明下载testnb.sws
https://sourceforge.net/p/networksym/code/ci/master/tree/
我试着在遗留的“Sage Notebook”(而不是Jupyter Notebook)中运行它,如下所示:

  • 打开Sage笔记本
  • 点击“上传”
  • 单击“浏览”
  • 选择testnb.sws
  • 点击“上传工作表”
  • 单击“评估”

评估此工作表中的程式码储存格会导致下列错误:

ValueError: This input cannot be turned into a graph

看起来在Sage中,np.array()是无效的。
但是,当我用

Aij32 = ([[0,1,0],[1,0,1],[0,1,0]])

而不是

Aij32 = np.array([[0,1,0],[1,0,1],[0,1,0]])

它显示了

AttributeError: 'list' object has no attribute 'copy'

如何克服这个问题?

qco9c6ql

qco9c6ql1#

将numpy数组转换为图形

如果a是表示图的邻接矩阵的numpy数组,则代替

Graph(a)

可以使用

Graph(matrix(a))

以构建相应的图。

修复问题中引用的工作表

在问题中提到的工作表testnb.sws中,替换此块


# get clusters

print "the orbits are:"
print data32.get_orbits()

通过以下块

def get_orbits(a):
    r"""
    Return the orbits as a list of lists.
    """
    if a._orbits is None:
        a._group, a._orbits = sg.Graph(
                matrix(a.get_adjacency_matrix())
            ).automorphism_group(orbits=True)
    return sg.copy(a._orbits)

# get clusters

print(f"the orbits are:\n{get_orbits(data32)}")

让一切都运转良好。

相关问题