我有一个很大的二维数组,可以通过索引访问。我只想更新不为零的索引数组的值。
arrayx = np.random.random((10,10))
假设我有索引(这只是示例,实际索引是由单独的进程生成的):
idxs = np.array([[4],[5],[6],[7],[8]]),np.array([[5,9]])
鉴于这些索引,这应该可以,但不能。
arrayx[idxs]
array([[0.7,0.1 ],[0.79,0.51],[0.,0.8 ],[0.82,0.32],0.89]],dtype=float16)
// note from editor: '<>' is equivalent to '!='
// but I agree that '>' 0 is more correct
// mask = mapx[idxs] <> 0 // original
mask = arrayx[idxs] > 0 // better
array([[ True,True],[ True,[False,True]])
arrayx[idxs][mask] += 1
但是,这不会更新阵列。我该怎么解决?