[英]error message when populating cell in 2d numpy array
我正在嘗試使用以下代碼將一些csv文件中的數據填充到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.
所以我打印出row [2]的內容,如下所示:
print 'row[2] is: ',row[2]
這產生了:
行[2]是:0.780083333333
因此,row [2]的內容不是錯誤消息所指示的序列。 而是內容是一個數字。
因此,我習慣於遵循以下代碼將row [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
因此,將row [2]放入變量即可解決該問題。 但這確實是草率的代碼,如果我每次必須將其放入變量中。
誰能告訴我如何修復代碼,以便在我鍵入更簡單的內容(例如PreExArray [(j-1),0] = [row [2]])時不會出現錯誤?
================================================== ========================================
好。 我重新編寫了代碼,現在它引發了一個新錯誤。 新代碼如下:
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] = row [1](#PreExArray [[j-1),0] = row [1])時,后續行運行時不會引發錯誤。
誰能告訴我如何編輯它,以便它不會繼續引發此錯誤?
您應該只有:
PreExArray[(j-1),0]=row[2]
也就是說,不應將右側放在長度為1的列表中。
看來您的行變量來自電子表格,並且第一個索引值是行標簽(字符串)。 如前所述,您不能將此數據存儲在數據類型為“ float”的numpy數組中。
您收到的錯誤消息來自以下事實:對於numpy,字符串看起來像一個序列(可能是因為它支持len屬性)。
如果要保存行標簽以重建電子表格可導入文件,請使用計算出的新值將它們存儲在單獨的列表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.