Python 矩阵在numpy中的一个热表示

Python 矩阵在numpy中的一个热表示,python,numpy,argmax,Python,Numpy,Argmax,在3d张量中,从值矩阵到同一事物的热表示,最简单/最聪明的方法是什么?例如,如果矩阵是类似张量的argmax之后的索引: indices=numpy.argmax(mytensor,axis=2) 其中张量为3D[x,y,z],指数自然为[x,y]。现在,我们要转到一个三维[x,y,z]张量,它在轴=2的最大值处有1,在任何其他位置有0 我知道向量到1-热矩阵的答案,但这是矩阵到1-热张量 使用的最佳设置之一- 如果您需要输入0s和1s,请附加.astype(int)酷答案!出于好奇,任何不使

在3d张量中,从值矩阵到同一事物的热表示,最简单/最聪明的方法是什么?例如,如果矩阵是类似张量的argmax之后的索引:

indices=numpy.argmax(mytensor,axis=2)
其中张量为3D[x,y,z],指数自然为[x,y]。现在,我们要转到一个三维[x,y,z]张量,它在轴=2的最大值处有1,在任何其他位置有0


我知道向量到1-热矩阵的答案,但这是矩阵到1-热张量

使用的最佳设置之一-


如果您需要输入
0s
1s
,请附加
.astype(int)

酷答案!出于好奇,任何不使用arange的东西?@A2B使用
range
而不是
np.arange
?:)使用arange有什么问题?您是否正在寻找一个内置的来创建这样一个单热阵列?如果是这样的话,就没有了。@A2B我们可以初始化3D输出数组的零,然后根据
索引将1的值赋给它。这对你来说够优雅吗?哦,等等,对于索引部分,我们仍然需要
np.arange
。你不能只说相同的\u形状\u零\u张量[矩阵]=1。因此,必须有另一个函数将[i,j]->m转换为[i,j,m],这就是解析矩阵值m所在的位置。@A2B井
索引
是最后一个轴索引。我们只需要生成对应于前两个轴的索引。同样,它必须显式或隐式地涉及范围创建。
indices[...,None] == np.arange(mytensor.shape[-1])