来自numpy的一种热编码

D3181

我试图理解示例python教程输出的值输出似乎按照我能理解的任何顺序排列。特定的python行导致我麻烦:

vocab_size = 13   #just to provide all variable values
m = 84 #just to provide all variable values
Y_one_hot = np.zeros((vocab_size, m))
Y_one_hot[Y.flatten(), np.arange(m)] = 1

输入Y.flatten()计算为以下numpy-array:

  [ 8  9  7  4  9  7  8  4  8  7  8 12  4  8  9  8 12  7  8  9  7 12  7  2
  9  7  8  7  2  0  7  8 12  2  0  8  8 12  7  0  8  6 12  7  2  8  6  5
  7  2  0  6  5 10  2  0  8  5 10  1  0  8  6 10  1  3  8  6  5  1  3 11
  6  5 10  3 11  5 10  1 11 10  1  3]

np排列是0-83之间的张量

np.arange(m)
[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
 72 73 74 75 76 77 78 79 80 81 82 83]

好的,所以我无法从新的Y_one_hot理解的输出是,我收到了一个大小为13的numpy数组(如预期的那样),但是我不明白为什么它们的位置基于Y定位。例如,flatten()输入是13的第一个数组:

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
  0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
  0 0 0 0 0 0 0 0 0 0 0 0]

有人可以解释一下我是如何从输入值到单行输出数组的吗?似乎这些位置是随机的,在其他13个数组中,这些位置的数量似乎也是随机的。这是预期的行为吗?

这是一个完整的可运行示例:

import numpy as np
import sys
import re



# turn Y into one hot encoding
Y =  np.array([ 8,  9,  7,  4 , 9,  7,  8,  4,  8,  7,  8, 12,  4,  8,  9,  8, 12,  7,  8,  9,  7, 12,  7,  2,
  9,  7,  8,  7,  2,  0,  7,  8, 12,  2,  0,  8,  8, 12,  7,  0,  8,  6, 12,  7,  2,  8,  6,  5,
  7,  2,  0,  6,  5, 10,  2,  0,  8,  5, 10,  1,  0,  8,  6, 10,  1,  3,  8,  6,  5,  1,  3, 11,
  6,  5, 10,  3, 11,  5, 10,  1, 11, 10,  1,  3])
m = 84
vocab_size = 13
Y_one_hot = np.zeros((vocab_size, m))
Y_one_hot[Y.flatten(), np.arange(m)] = 1
np.set_printoptions(threshold=sys.maxsize)
print(Y_one_hot.astype(int))
jakevdp

该行Y_one_hot[Y.flatten(), np.arange(m)] = 1是带有整数索引列表的数组的设置值(在Integer Array Indexing中记录

索引数组一起广播,一维数组的结果本质上是一种有效的方法:

for i, j in zip(Y.flatten(), np.arange(m)):
    Y_one_hot[i, j] = 1

换句话说,的每一列Y_one_hot对应于的条目Y.flatten(),并且在该条目给定的行中具有单个非零值。

使用较小的数组可能更容易看到:

Y_onehot = np.zeros((2, 3), dtype=int)
Y = np.array([0, 1, 0])

Y_onehot[Y.flatten(), np.arange(3)] = 1

print(Y_onehot)
# [[1 0 1]
#  [0 1 0]]

三个条目映射到三列,并且每一列在对应于该值的行中都有一个非零条目。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一种使用numpy的热编码

来自分类Dev

Tensorflow:一种热编码

来自分类Dev

Verilog中的一种热编码

来自分类Dev

字符级的一种热编码

来自分类Dev

熊猫:来自熊猫数据帧的一种热编码的出现矩阵

来自分类Dev

一种来自具有多个值的数据帧字符串列的热编码

来自分类Dev

如何将2D numpy数组转换为一种热编码?

来自分类Dev

R中多行的一种热编码

来自分类Dev

如何为DNA序列生成一种热编码?

来自分类Dev

一种热编码后如何汇总行

来自分类Dev

使用一种热编码映射标签列表

来自分类Dev

稀疏的一种热编码功能的内存问题

来自分类Dev

BigQuery SQL一种从长到宽表的热编码

来自分类Dev

保存并加载ML的一种热编码

来自分类Dev

一种用于大量标签的热编码

来自分类Dev

一种热编码R中的数据帧

来自分类Dev

Scala中RDD中的一种热编码

来自分类Dev

一种使用 sklearn 的状态热编码

来自分类Dev

是一种没有虚拟陷阱的热编码

来自分类Dev

一种热编码返回最后一个分类值的所有0向量

来自分类Dev

一种热编码,用于表示python中的语料库句子

来自分类Dev

在scikit-learn中进行一种热编码的可能方法?

来自分类Dev

一种无需迭代即可对矩阵中的列向量进行热编码的方法

来自分类Dev

一种热编码标签和分层的K折交叉验证

来自分类Dev

如何在.fit()方法中对多个标签(训练)使用一种热编码?

来自分类Dev

对pandas DataFrame中的列中的字符串进行一种热编码

来自分类Dev

ORACLE一种热编码:对所有可用列使用PIVOT运算符

来自分类Dev

使用一种热编码时的Logistic回归方程

来自分类Dev

具有多个 id 的一种热编码,大型数据帧中的值

Related 相关文章

热门标签

归档