以下の関数は、MTG.pyという独自のファイルで定義されています。隣接行列を入力とし、グラフを作成することになっています。関数はコマンドラインで動作しますが、スクリプトでは動作しません
import pygraphviz as pgv
import numpy as np
def matrix_to_graph(M):
A = pgv.AGraph()
for i in range(0, np.shape(M)[0]):
for j in range(0, np.shape(M)[0]):
if i < j and M[i][j] == 1:
A.add_edge(i,j)
A.write('M.dot')
C = pgv.AGraph('M.dot')
C.layout()
C.draw('M.png')
私はM.pngに印刷された正しいグラフであるコマンドライン
from MTG import matrix_to_graph
M = [[0, 1, 0, 1, 1], [1, 0, 1, 1, 0], [0, 1, 0, 0, 0], [1, 1, 0, 0, 1], [1, 0, 0, 1, 0]]
matrix_to_graph(M)
私は私が望む正確に何を得る、から実行します。しかし
、私は(インデントなしで、つまり関数の定義外で)上記のコードに追加した場合
M = input("Enter an adjacency matrix:")
matrix_to_graph(M)
私はエラー
for i in range(0, np.shape(M)[0]):
IndexError: tuple index out of range
を取得し、私はこれが原因で起こっていると想像入力関数は私がと考えるとは行列ですが、実際にはなのでです。私はこれをnp.matrix(M)を使って修正しようとしましたが、それは1x16ベクトルで私の行列を変えます。私はPythonには新しく、これをもっとうまくやるための1000の方法があると確信していますが、なぜこの特定の方法が機能していないのか理解したいと思っています。
私はPyCharm 2017.1.3(コミュニティ版、それが重要な場合)とPython 3.6を使用しています。
私は問題がどこから来たのか分かっていてうれしく、修正が本当に簡単だったことも嬉しいです。ありがとう。 – Trevor