当前位置: 首页 > 知识库问答 >
问题:

将索引数组转换为1-hot编码的numpy数组

孔梓
2023-03-14

假设我有一个1d numpy数组

a = array([1,0,3])

我想将其编码为一个2D one hot数组

b = array([[0,1,0,0], [1,0,0,0], [0,0,0,1]])

有没有快速的方法可以做到这一点?比仅仅在a上循环设置b的元素更快。

共有3个答案

萧琛
2023-03-14

如果您使用的是keras,则有一个内置的实用程序

from keras.utils.np_utils import to_categorical   

categorical_labels = to_categorical(int_labels, num_classes=3)

它与@YXD的答案几乎相同(参见源代码)。

班宏毅
2023-03-14
>>> values = [1, 0, 3]
>>> n_values = np.max(values) + 1
>>> np.eye(n_values)[values]
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.]])
巫马翰翮
2023-03-14

数组a定义输出数组中非零元素的列。您还需要定义行,然后使用奇特的索引:

>>> a = np.array([1, 0, 3])
>>> b = np.zeros((a.size, a.max()+1))
>>> b[np.arange(a.size),a] = 1
>>> b
array([[ 0.,  1.,  0.,  0.],
       [ 1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  1.]])
 类似资料:
  • 问题内容: 假设我有一个一维numpy数组 我想将此编码为2D一热阵列 有快速的方法吗?比循环遍历设置元素更快。 问题答案: 您的数组定义了输出数组中非零元素的列。您还需要定义行,然后使用花式索引:

  • 问题内容: 有没有一种有效的Numpy机制,可以根据条件为true而不是布尔掩码数组来检索数组中位置的整数索引? 例如: 在这种情况下,我想知道指标的地方。是否可以生成这些而不循环? 问题答案: 另外的选择: 这与。

  • 我想将数据帧的索引列转换为数组,但我不确定如何进行。我已经将第二列转换为数组,但由于某些原因,它在第一列上也不起作用。以下是我尝试转换索引列的方式: 但我得到了 这是我的数据框

  • 问题内容: 我正在尝试将代表黑白图像的2D Numpy数组转换为3通道OpenCV数组(即RGB图像)。 基于代码示例和文档,我正尝试通过Python执行此操作,例如: 但是,对CvtColor()的调用将引发以下cpp级异常: 我究竟做错了什么? 问题答案: 您的代码可以固定如下: 简短说明: 数据类型不受OpenCV的支持(它支持,,,,,,) 无法处理numpy数组,因此必须将两个参数都转换

  • 问题内容: 注意: 这要求与通常的元组到数组的转换相反。 我必须将一个参数传递给(包装的c ++)函数作为嵌套元组。例如,以下作品 而以下 不 不幸的是,我想使用的参数是一个numpy数组。对于某些N,该阵列的尺寸始终为2xN,这可能会很大。 有没有简单的方法可以将其转换为元组?我知道我可以循环遍历,创建一个新的元组,但是如果numpy数组提供了一些不错的访问权限,我会更喜欢。 如果不可能如我所愿

  • 问题内容: 你是否知道如何以NumPy数组或python列表的形式获取DataFrame的索引或列? 问题答案: 要获取NumPy数组,应使用以下属性: 这样可以访问数据的存储方式,因此无需进行转换。 注意:此属性也可用于其他许多熊猫的对象。 要将索引作为列表获取,请致电tolist: 同样,对于列。