创建一个包含全零的llist,除了一列应该是值1

时间:2017-06-30 19:06:44

标签: python numpy

任何人都可以帮忙吗? 如果我尝试这个代码,

 a = np.array([2,1,5],[2,5,3])
 b = np.zeros_like(a)
 c=b[np.arange(len(a)), a.argmax()] = 1
 print(c)

错误too many Indices for array 我的动机是制作一个列表,除了在输入Numpy数组中最高的列之外,它给我所有列零,并使其为'1'。 输出应该是([0,0,1],[0,1,0])

1 个答案:

答案 0 :(得分:0)

代码:

matrix = np.array([[2, 1, 5], [2, 5, 3]])
imax = matrix.argmax(1)
n_labels = np.size(matrix, 1)
onehot = np.eye(n_labels)[imax]

如何运作,逐行:

  1. 定义numpy数组。
  2. 获取每行中最大值的索引。
  3. 获取矩阵行的大小N
  4. 创建一个NxN矩阵(让我们称之为M),其中所有值都为零,主对角线除外,它是1.对于步骤2中的每个值i ,从这个新矩阵i中选择行M