我有一个N个整数的numpy数组,范围从0到M(含)。我希望将它们作为索引处理成NxM矩阵,该矩阵在数组指示的每个位置包含1,在其他地方包含0。例如,如果给定N = 4,则M = 2,我有以下数组
[1, 0, 2, 1]
我想得到这个矩阵
[0 1 0]
[1 0 0]
[0 0 1]
[0 1 0]
即。第0行在第1列中有1,第1行在第0列中有1,等等
如何在numpy中进行此转换?
答案 0 :(得分:2)
这需要multi-dimensional array indexing。
a = np.array([1, 0, 2, 1])
z = np.zeros(12, dtype=int).reshape(4,3)
z[np.arange(a.size), a] = 1