現在我有一個具有形狀(100,10)的numpy數組數據集。每行是一個熱門編碼。我想轉換成形狀爲(100,)的n-drrary,這樣我就可以將每個向量行轉換爲一個表示非零索引索引的整數。有沒有使用numpy或tensorflow做這個快速的方法?如何將一個熱編碼轉換爲整數
謝謝!
現在我有一個具有形狀(100,10)的numpy數組數據集。每行是一個熱門編碼。我想轉換成形狀爲(100,)的n-drrary,這樣我就可以將每個向量行轉換爲一個表示非零索引索引的整數。有沒有使用numpy或tensorflow做這個快速的方法?如何將一個熱編碼轉換爲整數
謝謝!
正如Frank Demoncourt所指出的那樣,由於one_hot只有一個1而其餘的都是零,所以可以使用argmax作爲這個特定的例子。一般來說,如果你想在一個numpy數組中找到一個值,你很可能會想諮詢numpy.where。此外,該堆棧交換問題:
Is there a Numpy function to return the first index of something in an array?
由於一熱載體與全0和一個1向量,你可以做這樣的事情:
>>> import numpy as np
>>> a = np.array([[0,1,0,0],[1,0,0,0],[0,0,0,1]])
>>> [ np.where(r==1)[0][0] for r in a ]
[1, 0, 3]
這只是建立索引列表,每行爲1。 [0] [0]索引只是爲了讓結構(包含數組的元組)返回的位置超出了您的要求。
對於任何特定的行,你只是想索引到一個。例如,零排在1索引1
>>> np.where(a[0]==1)[0][0]
1
發現可以使用numpy.argmax或tf.argmax。例如:
import numpy as np
a = np.array([[0,1,0,0],[1,0,0,0],[0,0,0,1]])
print('np.argmax(a, axis=1): {0}'.format(np.argmax(a, axis=1)))
輸出:
np.argmax(a, axis=1): [1 0 3]
您可能也想看看sklearn.preprocessing.LabelBinarizer.inverse_transform
。
Argmax適用於這個例子,因爲在一個熱點中,只有一個1,其餘的都是零。對於在np n-darray中查找特定值的一般情況,OP可以使用np.where。乾杯! – JawguyChooser
所以你試圖解碼每一行矢量?你在尋找類似'np.argmax()'的東西嗎?如果你描述瞭解碼的目的,這將是有幫助的。 – rosendin