2016-12-06 47 views
0

我正在與以這種方式所定義的結構化陣列工作:填充的結構化陣列拋出「ndarray不是C連續」錯誤

scores = np.empty((num_of_imgs, 4), 
           dtype=[('id', 'u4'), ('bestT', 'u8'), ('bestR', 'f8'), ('bestP', 'f8')]) 

然後在for循環中我填充它:

scores[i] = [id, bestT, bestR, bestP] 

其中列表中的所有變量都是具有形狀(1,)的numpy數組。 但是,這行代碼會引發上述錯誤。爲什麼?

+0

您是否嘗試過 「得分[我,:] = [ID,bestT,bestR,bestP]」? – Balzola

+0

錯誤仍然存​​在。 – AreTor

回答

4
  1. scores分配使得四元組NX4陣列,這是不是你想要一個額外的維度大,我想。它應該是

    scores = np.empty(num_of_imgs, 
        dtype=[('id', 'u4'), ('bestT', 'u8'), ('bestR', 'f8'), ('bestP', 'f8')]) 
    
  2. 然後你想一個列表分配給一個元組,這是扔你的c-連續錯誤(numpy的是不是類型轉換爲結構化數組,因爲它是ndarrays樂於助人)。使賦值成爲一個元組。 (使用[]()代替)

    scores[i] = (id, bestT, bestR, bestP) 
    
+0

謝謝你的回答,現在的代碼工作。 – AreTor