首页 >后端开发 >Python教程 >如何在 NumPy 中将索引数组转换为 One-Hot 编码数组?

如何在 NumPy 中将索引数组转换为 One-Hot 编码数组?

Barbara Streisand
Barbara Streisand原创
2024-11-01 00:09:28615浏览

How to Convert an Array of Indices to a One-Hot Encoded Array in NumPy?

在 NumPy 中将索引数组转换为 One-Hot 编码数组

通常,有必要转换一维索引数组到一个 2D 数组中,其中每一行代表原始数组中相应索引的 one-hot 编码。

示例:

让我们有一个一维索引数组 ' a':

<code class="python">a = np.array([1, 0, 3])</code>

我们的目标是创建一个二维数组 'b',其中每一行都是 'a' 中相应索引的 one-hot 编码:

<code class="python">b = np.array([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]])</code>

解决方案:

要实现此转换,我们可以利用以下步骤:

  1. 创建归零数组:
    创建归零数组数组 'b' 有足够的列来容纳 'a' 中的最大索引值,再加一 ('a.max() 1')。
<code class="python">b = np.zeros((a.size, a.max() + 1))</code>
  1. 一-热编码:
    对于数组中的每一行“i”,将“a[i]”列设置为 1。此步骤将“a”中的每个索引转换为'b'.
<code class="python">b[np.arange(a.size), a] = 1</code>

输出:

执行此代码会生成所需的单热编码数组 'b':

<code class="python">[[ 0.  1.  0.  0.]
 [ 1.  0.  0.  0.]
 [ 0.  0.  0.  1.]]</code>

以上是如何在 NumPy 中将索引数组转换为 One-Hot 编码数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn