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

时间:2018-06-13 00:25:57

标签: python numpy scipy ipython sage

按照说明下载testnb.sws后 在网站上 https://sourceforge.net/p/networksym/code/ci/master/tree/
我试图在传统的Sage笔记本电脑中运行它#34; (不是Jupyter笔记本),如下:

  • 打开Sage Notebook
  • 点击"上传"
  • 点击"浏览"
  • 选择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'

如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

将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 "the orbits are:"
print get_orbits(data32)

让一切顺利。