我試圖從一些CSV文件的數據填充到用下面的代碼一個numpy的數組:錯誤消息在2D numpy的陣列填充單元時
PreExArray=zeros([len(TestIDs),numColumns],float)
for row in reader:
if row[1] =='PreEx10SecondsBEFORE':
PreExArray[(j-1),0]=[row[2]]
然而,代碼的最後一行以上引發以下錯誤:
ValueError: setting an array element with a sequence.
所以我打印出的行中的內容[2],如下所示:
print 'row[2] is: ',row[2]
方法本產品ED:
行[2]爲:0.780083333333
所以行的內容[2]是不是一個序列作爲錯誤消息指示。相反,內容是一個數字。
因此,我習慣以下代碼將行[2]的內容放入一個變量,然後用該變量的內容填充PreExArray [(j-1),0],然後打印出內容該變量:
jones = row[2]
PreExArray[(j-1),0]=jones
print 'PreExArray[(j-1),0] is: ',PreExArray[(j-1),0]
結果是:
PreExArray [(J-1),0]是:0.780083333333
因此,把行[2]代入變量解決了這個問題。但是,如果我必須每次都將它放入一個變量,那麼這是非常潦草的代碼。
任何人都可以告訴我如何修復代碼,以便當我鍵入更簡單的事情時不會拋出錯誤,如PreExArray [(j-1),0] = [row [2]]?
============================================== =============================================
OK 。我重新編寫了代碼,現在它拋出了一個新的錯誤。新的代碼如下:
PreExArray=zeros([len(TestIDs),numColumns],float)
for row in reader:
if row[1] =='PreEx10SecondsBEFORE':
PreExArray[(j-1),0]=row[1]
PreExArray[(j-1),1]=row[2]
這修改後的代碼現在引發以下錯誤消息:
PreExArray[(j-1),0]=row[1]
ValueError: setting an array element with a sequence.
然而,當我註釋掉PreExArray [(J-1),0] =行[ 1](#PreExArray [(j-1),0] = row [1]),則後續行將不會引發錯誤。
誰能告訴我如何編輯這個,以便它不會繼續拋出這個錯誤?
根據您的比較,行[1]是一個字符串'PreEx10SecondsBEFORE'。你不能在一個numpy浮點數組中存儲一個字符串。你想在最後讓你的陣列看起來像什麼? – 2010-10-11 07:17:49
我將採取每行的意思,用每行的方法創建一個新的數組/列表。這個練習重複五個不同的測試條件。然後,我將創建一個彙總矩陣,其列是變量,其行是測試條件,每行/列單元格中含有平均值。 – MedicalMath 2010-10-11 08:51:24