2017-03-16 70 views
2

說明NumPy的np.array與D型細胞類型錯誤

我花了大約一個小時試圖追捕一個numpy的陣列結構的錯誤。我不能正確使用numpy dtypes,但錯誤信息不夠明確,而且我也沒有給出足夠好的堆棧跟蹤來查找錯誤。

簡化示例創建相同的錯誤

import numpy as np 
names = ['id', 'x'] 
formats = [np.int64, np.float64] 
np.array([1, 1.0], dtype={'names': names, 'formats': formats}) 

下面的代碼導致錯誤

----> 1 np.array([1, 1.0], dtype={'names': names, 'formats': formats}) 
TypeError: a bytes-like object is required, not 'int' 

所以我得到從所述第一元件是一個整數,但爲什麼發生錯誤它期望像對象一樣的字節嗎?

答案:它與第一個元素在int中無關。該列表需要成爲一個元組,見下文。

+0

恩,你究竟想在這裏做什麼? –

+0

試圖構建一個記錄陣列找出解決方案,它並不明顯。 Numpy需要解決這個問題。 – costrouc

回答

3

解決方案是numpy需要單個元組或元組列表。 不是列表或列表。

以下工作

np.array((1, 1.0), dtype={'names': names, 'formats': formats}) 

我覺得很沮喪的是numpy的給出錯誤沒有跡象表明這是預期。

+0

這個要求並不像這個文檔頁面那樣明確:https://docs.scipy.org/doc/numpy/user/basics.rec.html。在np.array的文檔中還有一個沒有評論的例子:'x = np.array([(1,2),(3,4)],dtype = [('a',' hpaulj