使用来自同一数组的另一个值作为索引替换numpy数组中的值

时间:2014-11-06 22:24:54

标签: python arrays numpy

我正在寻找一种优雅的方式来做到以下几点:

我有一个这样的数组:

[[0, 0, 0, 1],
 [0, 0, 0, 2],
 [0, 0, 0, 1]]

我想替换每一行上的元素,哪个索引等于该行的最后一个元素,为1.因此,对于第一行,我需要索引为1的元素为1,对于第二行元素为索引2变为1,依此类推。 这只是一个例子,实际上我有更大的矩阵,最后一列的值从0到9,我需要用它来指示该行的哪个元素变为1。

2 个答案:

答案 0 :(得分:3)

IIUC,您可以使用advanced indexing并执行类似

的操作
>>> s
array([[0, 0, 0, 1],
       [0, 0, 0, 2],
       [0, 0, 0, 1]])
>>> s[np.arange(len(s)),s[:,-1]] = 1
>>> s
array([[0, 1, 0, 1],
       [0, 0, 1, 2],
       [0, 1, 0, 1]])

答案 1 :(得分:1)

array = [[0, 0, 0, 1], [0, 0, 0, 2], [0, 0, 0, 1]]
for row in array:
    row[row[-1]] = 1

产量

[[0, 1, 0, 1], [0, 0, 1, 2], [0, 1, 0, 1]]