Вы можете сделать это в одном назначении, используя argwhere (), чтобы заменить индексы, но ваш подход быстрее, если вы не оцениваете условие дважды:
import numpy as np
array1 = np.arange(100)
array2 = np.arange(1000,1100)
condition = array1%3==0 # avoid doing this twice
array1[condition] = array2[condition]
output:
print(array1)
[1000 1 2 1003 4 5 1006 7 8 1009 10 11 1012 13
14 1015 16 17 1018 19 20 1021 22 23 1024 25 26 1027
28 29 1030 31 32 1033 34 35 1036 37 38 1039 40 41
1042 43 44 1045 46 47 1048 49 50 1051 52 53 1054 55
56 1057 58 59 1060 61 62 1063 64 65 1066 67 68 1069
70 71 1072 73 74 1075 76 77 1078 79 80 1081 82 83
1084 85 86 1087 88 89 1090 91 92 1093 94 95 1096 97
98 1099]