我正在寻找一种优雅的方式来做到以下几点:
我有一个这样的数组:
[[0, 0, 0, 1],
[0, 0, 0, 2],
[0, 0, 0, 1]]
我想替换每一行上的元素,哪个索引等于该行的最后一个元素,为1.因此,对于第一行,我需要索引为1的元素为1,对于第二行元素为索引2变为1,依此类推。 这只是一个例子,实际上我有更大的矩阵,最后一列的值从0到9,我需要用它来指示该行的哪个元素变为1。
答案 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]]