给定一个如下所示的起始 numpy 数组:
B = np.array( [1, 1, 1, 0, 2, 2, 1, 3, 3, 0, 4, 4, 4, 4] )
当有重复时,将一组值交换为另一组值的最有效方法是什么?例如,让
s1 = [1,2,4]
s2 = [4,1,2]
一个低效的交换方法会迭代s1
,s2
因此:
B2 = B.copy()
for x,y in zip(s1,s2):
B2[B==x] = y
作为输出给予
B2 -> [4, 4, 4, 0, 1, 1, 4, 3, 3, 0, 2, 2, 2, 2]
zip
有没有办法在没有循环的情况下基本上就地执行此操作?