2015-05-12 72 views
2

我是一個外部計算機上運行sympy,但是當我做了簡單的命令Sympy「字符串格式化過程中並不是所有的參數轉換」使用零時((N,N))

M=sympy.zeros((2,2)) 

我得到的錯誤

Traceback (most recent call last): 
    File "test.py", line 8, in <module> 
    M=sp.zeros((2,2)) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/matrices/dense.py", line 1229, in zeros 
    return cls.zeros(r, c) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/matrices/dense.py", line 513, in zeros 
    r = as_int(r) 
    File "/apps/brussel/magnycours/software/sympy/0.7.6-intel-2015a-Python-2.7.9/lib/python2.7/site-packages/sympy/core/compatibility.py", line 389, in as_int 
    raise ValueError('%s is not an integer' % n) 
TypeError: not all arguments converted during string formatting 

然而,當我在我自己的電腦上運行,沒有任何問題。我怎樣才能解決這個問題?

我的電腦上的版本是0.7.1.rc1,而羣集上的版本是0.7.6。我應該問他們安裝(舊?)版本還是有一個更容易修復?

+2

我敢打賭,'sympy.zeros'函數在集羣上的版本不同的參數。我會看'0.7.6'的API文檔來看看它應該採取什麼。 –

+0

您的實際錯誤是堆棧跟蹤中顯示的「ValueError」。在構造錯誤消息的過程中,會引發'TypeError'。大概是因爲n是一個元組,但預計是一個整數。 – swenzel

+0

謝謝,這是一個非常簡單的解決方案,現在它的工作沒有問題。這兩個版本的語法確實是不同的(這種語法相當遲鈍,新版本應該至少能夠識別和通知,當一個人嘗試舊的語法而不是拋出神祕的錯誤信息時)。 –

回答

0

如果你想用零一個2x2矩陣,試試這個:

In [6]: zeros(2,2) 
Out[6]: 
Matrix([ 
[0, 0], 
[0, 0]]) 

In [7]: zeros(2) 
Out[7]: 
Matrix([ 
[0, 0], 
[0, 0]]) 
相關問題