转换 ND 矩阵到 one hot 向量,仅使用 numpy

想了半小时。
pytorch 的 one_hot 好像不支持多维矩阵生成one_hot,用下面的办法也可以迁移到 pytorch 中

import numpy as np


def one_hot(class_array: np.ndarray, class_num):
    '''
    可将[D1, D2, D3, ..., DN] 矩阵转换为 [D1, D2, ..., DN, D(N+1)] 的独热矩阵
    :param class_array: [D1, D2, ..., DN] 类别矩阵
    :param class_num:   类别数量
    :return:
    '''
    class_array = np.array(class_array, copy=False)
    a = np.arange(class_num).reshape([*([1]*class_array.ndim), class_num])
    b = np.equal(class_array[..., None], a).astype(np.long)
    return b


if __name__ == '__main__':
    class_num = 10
    a = np.random.randint(0, class_num, (3, 128, 128))
    h = one_hot(class_array=a, class_num=class_num)
    assert np.all(a == np.argmax(h, -1))

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用numpy中的`numpy.vstack`或`numpy.hstack`函数将多个向量合并为矩阵。 例如: ``` import numpy as np vector1 = np.array([1, 2, 3]) vector2 = np.array([4, 5, 6]) vector3 = np.array([7, 8, 9]) vector4 = np.array([10, 11, 12]) matrix = np.vstack((vector1, vector2, vector3, vector4)) print(matrix) ``` 输出: ``` array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) ``` ### 回答2: 使用numpy将四个向量合并存储为矩阵非常简单。首先,我们需要导入numpy库。 import numpy as np 然后,我们可以创建四个向量,分别为vec1、vec2、vec3和vec4。这里假设每个向量的维度都为n。 vec1 = np.array([1, 2, 3, 4]) vec2 = np.array([5, 6, 7, 8]) vec3 = np.array([9, 10, 11, 12]) vec4 = np.array([13, 14, 15, 16]) 接下来,我们可以使用numpy库中的vstack函数来垂直(按行)合并这四个向量,形成一个矩阵。vstack函数接受一个元组或列表作为输入,将其按行合并。 matrix = np.vstack((vec1, vec2, vec3, vec4)) 最后,我们可以打印输出矩阵。 print(matrix) 这样就能将四个向量合并存储为矩阵了。输出结果将类似于: [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12] [13 14 15 16]] ### 回答3: 使用numpy可以很方便地将四个向量合并存储为矩阵。具体步骤如下: 首先,我们需要导入numpy库: import numpy as np 然后,我们创建四个向量(或二维数组): vector1 = np.array([1, 2, 3, 4]) vector2 = np.array([5, 6, 7, 8]) vector3 = np.array([9, 10, 11, 12]) vector4 = np.array([13, 14, 15, 16]) 接下来,我们将四个向量合并为矩阵,可以使用numpy中的concatenate函数: matrix = np.concatenate((vector1, vector2, vector3, vector4)) 完成以上操作后,我们得到了一个一维矩阵matrix,其中包含了四个向量的所有元素。 如果我们要将这个一维矩阵转换为二维矩阵,可以使用reshape函数: matrix = matrix.reshape((4, 4)) 这样,我们就成功地将四个向量合并存储为一个4x4的矩阵matrix。 最后,我们可以打印出这个矩阵来进行验证: print(matrix) 输出结果为: [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12] [13 14 15 16]] 通过以上步骤,我们成功地将四个向量合并存储为了一个4x4的矩阵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值