2012-09-10 16 views
-1

第二編輯設定數組元素與序列差錯

這是一個「stokes_line」如何生成:

os.system('pdv -t %s > temp.txt ' % epoch_name) 
    stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')],  skip_header=1) 

os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i]) 
stokes_list[b] = stokes_line 

「PDV」是從其中產生用於一些數字另一程序中的命令在「stokes_line」中。

stokes_list每次都會在循環中添加一個新的stokes_line。

編輯:

一個stokes_line與numpy.genfromtxt命令創建(從一個txt文件,這樣的提取物)和由彩車,他們看起來是這樣的:

[(0.00126596,) (0.000621272,) (0.00058694,) ..., (0.0015368,) (0.000926448,) (7.95851e-05,)]

他們中的一羣組成了一個stokes_list,每個stokes_line都由相同數量的花車組成。

問題是因爲genfromtxt沒有創建一個可以是方括號的列表,而是其他的東西(被稱爲序列)?


我寫了工作找到我的筆記本電腦(Python版本2.7.3)一個Python代碼,但它似乎沒有我的大學桌面(Python版本2.5.2)上運行。

我不認爲在這裏展示大量的代碼將是有益的,但錯誤信息是這兩行的第二個:

os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i]) 
stokes_list[b] = stokes_line 

其中「VAP」是一個命令從另一個程序它返回一些值。無論如何,問題的關鍵是,我收到以下錯誤消息,只有當我在舊版本的Python運行:

ValueError: setting an array element with a sequence.

現在我做了一點研究,和人說,這個問題是由於不兼容一些這樣的列表的長度 - 但如果是這樣的話,爲什麼它在我的新版本的Python上運行時工作正常。

任何幫助將是偉大的,謝謝!

+1

您需要顯示解釋什麼是「stokes_list」和「stokes_line」的代碼,因此在構建ndarrays方面進行了一些改進。 – BrenBarn

+0

哦,好吧我現在點擊鏈接。抱歉。我會通過我的舊問題並接受一些答案。 – user1551817

+0

它如何_看起來像_不描述它是什麼。張貼更多的代碼;特別是在生成「stokes_line」和「stokes_list」的地方。 –

回答

3

.format,在2.6中增加Formatter class

os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i])應該工作。

+0

抱歉抱歉 - 我原本是這樣做的,但是我改變了它,因爲有人告訴我它不起作用。我忘了在這裏刪除它 - 我現在將編輯。但問題是一樣的。 – user1551817

+0

您需要按照BrenBarn的建議更新原始問題。 –

0

當你使用np.genfromtxt(…, usecols=3, dtype=[("stokesI","float")])時,你正在構造一個只有一個字段的結構化數組("stokesI")。當然,當你打印陣列,出現這種結構:

[(0.00126596,) (0.000621272,) (0.00058694,) ..., (0.0015368,) (0.000926448,) (7.95851e-05,)] 

每一項都是一個np.void由一個名爲float字段。

看起來有點浪費,你也許可以簡化您的表達:

np.genfromtxt(…,usecols=3, dtype=float) 

然後,您可以:

[ 1.26596000e-03 6.21272000e-04 5.86940000e-04 ... 1.53680000e-03 
    9.26448000e-04 7.95851000e-05] 

的可能原因,它顯然無法在舊版本的Python的是,你使用的是舊版本的NumPy,比如1.4或1.5。因爲(更好地處理髮電機,自動轉換字符串......)

相關問題