簡體   English   中英

IndexError用1D數組索引2D數組(NumPy)

[英]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)

如果labelsfloat而你不想改變它的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM