[英]IndexError indexing a 2D array with a 1D array (NumPy)
我有一個NumPy標簽數組:
labels = np.ndarray(10000, dtype=np.float32)
數組中的元素如下所示:
print(labels[1:5])
Output: [ 9. 9. 4. 1.]
我想將它們轉換為一個熱編碼標簽,並且使用了以下代碼:
one_hot_labels = np.eye(10)[labels]
我收到以下錯誤:
IndexError Traceback (most recent call last)
<ipython-input-21-dccf85afc031> in <module>()
1
----> 2 s=np.eye(10)[labels]
IndexError: arrays used as indices must be of integer (or boolean) type
我該如何解決?
您已將標簽定義為np.float32
。 如果將它們用作數組或矩陣的索引,則它們必須是整數。 要轉換np.float32
使用.astype(int)
:
one_hot_labels=np.eye(10)[labels.astype(int)]
或直接將標簽定義為int:
labels=np.ndarray(10000,dtype=int)
如果labels
是float
而你不想改變它的dtype
,你可以簡單地使用MultiLabelBinarizer
。 此代碼段應完成工作:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
one_hot_labels = mlb.fit_transform(labels[:, None])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.