簡體   English   中英

在二維numpy數組中填充單元格時出現錯誤消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM