我有两个 numpy 数组,都是 M 乘 N。X 包含随机值。Y 包含真/假。数组 A 包含 X 中需要替换的行的索引,值为 -1。我只想替换 Y 为真的值。
这里有一些代码可以做到这一点:
M=30
N=40
X = np.zeros((M,N)) # random values, but 0s work too
Y = np.where(np.random.rand(M,N) > .5, True, False)
A=np.array([ 7, 8, 10, 13]), # in my setting, it's (1,4), not (4,)
for i in A[0]:
X[i][Y[A][i]==True]=-1
但是,我真正想要的只是替换一些条目。列表 B 包含需要为 A 中的每个索引替换多少个。它已经排序,因此 A[0][0] 对应于 B[0],等等。此外,如果 A[i] = k,那么Y 中的对应行至少有 k 个真值。
B = [1,2,1,1]
然后对于每个索引 i(在循环中),
X[i][Y[A][i]==True][0:B[i]] = -1
这行不通。关于修复的任何想法?