2012-06-25 51 views
3

我試圖顯示兩個單獨列表之間的關聯。在安裝Numpy之前,我解析了世界銀行的GDP數據和互聯網用戶數量,並將它們存儲在兩個單獨的列表中。這是代碼片段。這只是爲gdp07。實際上,我有更多的名單和其他數據,如失業率。Python的Numpy相關錯誤

import numpy as np 

file = open('final_gdpnum.txt', 'r') 
gdp07 = [] 
for line in file: 
    fields = line.strip().split() 
    gdp07.append(fields [0])  

file2 = open('internetnum.txt', 'r') 
netnum07 = [] 
for line in file2: 
    fields2 = line.strip().split() 
    nnetnum07.append(fields2 [0]) 

print np.correlate(gdp07,netnum07,"full") 

我得到的錯誤是這樣的:

Traceback (most recent call last): 
    File "Project3,py", line 83, in ,module. 
    print np.correlate(gdp07, netnum07, "full") 
    File "/usr/lib/python2.6/site-packages/numpy/core/numeric.py", line 645, in correlate 
    return multiarray.correlate2(a,v,mode)) 
ValueError: data type must provide an itemsize 

只是爲了記錄在案,我使用Cygwin與Windows計算機上的Python 2.6。我只使用Numpy以及它的依賴和其構建的其他部分(gcc編譯器)。任何幫助都會很棒。 THX

回答

3

也許這是錯誤,當您嘗試輸入數據串,根據python文檔條,因爲()返回一個字符串

http://docs.python.org/library/stdtypes.html

嘗試將數據解析到你想

任何類型

正如你可以在這裏看到

In [14]:np.correlate(["3", "2","1"], [0, 1, 0.5]) 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
/home/dog/<ipython-input-14-a0b588b9af44> in <module>() 
----> 1 np.correlate(["3", "2","1"], [0, 1, 0.5]) 

/usr/lib64/python2.7/site-packages/numpy/core/numeric.pyc in correlate(a, v, mode, old_behavior) 
    643   return multiarray.correlate(a,v,mode) 
    644  else: 
--> 645   return multiarray.correlate2(a,v,mode) 
    646 
    647 def convolve(a,v,mode='full'): 

ValueError: data type must provide an itemsize 

嘗試解析值

In [15]: np.correlate([int("3"), int("2"),int("1")], [0, 1, 0.5]) 
Out[15]: array([ 2.5]) 



import numpy as np 

file = open('final_gdpnum.txt', 'r') 
gdp07 = [] 
for line in file: 
    fields = line.strip().split() 
    gdp07.append(int(fields [0]))  

file2 = open('internetnum.txt', 'r') 
netnum07 = [] 
for line in file2: 
    fields2 = line.strip().split() 
    nnetnum07.append(int(fields2 [0])) 

print np.correlate(gdp07,netnum07,"full") 

你的其他錯誤是一個字符結尾問題 我希望這個作品,因爲我不認爲我可以重現它,因爲我有一個默認支持UTF-8一臺Linux機器。 我經過IPython的幫助(編解碼器)文件 http://code.google.com/edu/languages/google-python-class/dict-files.html

import codecs 

f = codecs.open(file, "r", codecs.BOM_UTF8) 
for line in f: 
    fields = line.strip().split() 
    gdp07.append(int(fields [0])) 
+0

我認爲你是正確的字符串輸出。我首先嚐試了你的建議。但它給了我一個不同的價值錯誤,說這是一個無效的文字。 「ValueError:int()無效的基數爲10:'\ xef \ xbb \ xbf553,771' 我試過取出strip(),只留下split(),但是我最初的問題是」數據類型必須提供一個項目大小「仍然 – Nopiforyou

+0

我想你可以嘗試一個浮動或給我們一小段數據 – user1462442

+0

哈哈是啊我也嘗試過浮動以及它是與int相同的問題... :( 數據的方式是現在提交 ['11.1','5.9','3','22.7','13.7','3.6','3.7'] 當然還有更多的列表,他們更大 – Nopiforyou

0

嘗試投的數據爲float型。這個對我有用!