鉴于两个列表(a和b),我想替换列表中的三个元素' a'列表中的三个元素' b'。目前我正在使用这样的表达式:
a[0], a[5], a[7] = b[11], b[99], b[2]
由于我需要经常使用许多不同的阵列进行此类操作,我想知道是否有更紧凑的解决方案来解决这个问题(我需要替换的元素数量总是为3)。我在考虑类似的事情:
a[0,5,7] = b[11,99,2]
这显然不起作用。
答案 0 :(得分:1)
如果你有一个python列表,你可以这样做:
toReplace = [0,5,7]
targetIndices = [11, 99, 2]
for i,j in zip(toReplace, targetIndices): a[i] = b[j]
如果你有一个numpy数组,它甚至更简单:
a[toReplace] = b[targetIndices]
#i.e, a[[0,5,7]] = b[[11, 99, 2]]
答案 1 :(得分:1)
可能有一些更好的解决方案,但这样做可以解决问题:
ind1 = [0,5,7]
ind2 = [11,99,2]
for i in range(len(ind1)):
a[ind1[i]]=b[ind2[i]]