我試圖對數據進行熱編碼。 數據是vocabulary_size的列表= 17005207.Python中的列表和Numpy數組
要熱編碼,我由num_labels = 100 的輸入列表以下代碼:
inputs = []
for i in range(vocabulary_size):
inputs.append(np.arange(num_labels) == data[i]).astype(np.float32)
拋出我一個錯誤:
AttributeError: 'NoneType' object has no attribute 'astype'
我嘗試了dtype = np.float32裏面的append函數,但又錯了。
當我試試這個:
inputs = []
for i in range(vocabulary_size):
inputs.append(np.arange(num_labels) == data[i])
inputs = np.array(inputs,dtype=np.float32)
我得到正確的答案:vocabulary_size X num_labels的熱編碼輸入序列。
沒有使用Numpy的一條線的任何替代解決方案?
解決:我可以直接使用numpy數組(輸入)與列表(數據)?
信息有關數據:數據= np.ndarray(LEN(字),D型細胞= np.int32)
格式化功能:
def reformat(data):
num_labels = vocabulary_size
print (type(data))
data = (np.arange(num_labels) == data[:,None]).astype(np.int32)
return data
print (data,len(data))
return data
新問題:數據的尺寸爲(vocabulary_size,)...如何使用ravel或reshape將數據轉換爲(1,vocabulary_size)的維度?
你的錯誤出現從你試圖從'inputs.append()'調用得到**返回**的'astype'屬性的事實,那就是None對象。換句話說,你嘗試調用None.astype(),這顯然不起作用。 – jadsq
冷靜下來。三次編輯如此之快,人們無法回答你的問題,因爲它每秒都在變化。你似乎明白,ravel或重塑可以幫助你:而不是趕着問這個問題,你有沒有試過閱讀'numpy.reshape'文檔? – YuppieNetworking
Sry @YuppieNetworking,如果它太多了。只是想澄清一下。我確實閱讀過文檔。只是想要確切的實現,因爲在哪裏應該是參數重塑或ravel。 – SupposeXYZ