将numpy索引数组展开为矩阵

时间:2013-09-02 22:25:45

标签: python numpy indexing

我有一个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中进行此转换?

1 个答案:

答案 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