Спасибо за обновление вашего вопроса.Исходя из ваших примеров данных, вот мои настройки:
a = np.array([[179.52181224, 196.11236657, 199.25513578, 200.81821174, 198.7369237,
188.63429662, 192.30241342, 207.88677914, 222.15657045, 229.51498031,
231.98006343, 231.87414046, 230.46600773, 218.49685369, 162.22483198,
100.36016141, 121.1080895 , 135.74811817, 130.99244378, 110.68895168,
118.30273168, 126.86982489, 129.77672984, 124.48464581, 113.252353 ],
[196.82448164, 214.76750918, 217.8666702 , 220.43924199, 218.29167364,
206.96139307, 210.62221148, 226.93273178, 242.81860388, 250.77400119,
252.75942764, 252.58055613, 251.7060296 , 244.7889392 , 205.30175274,
140.06253874, 130.66796303, 134.60075016, 144.20452322, 134.04340699,
134.67761061, 134.7536771 , 134.06737521, 132.02019221, 125.54434286],
[199.35308577, 217.40897714, 220.85336669, 223.59548903, 221.36787333,
210.40169753, 213.24258599, 228.92592981, 244.90159636, 252.59280128,
252.9813501 , 248.71485061, 237.89496352, 225.45499552, 211.15977205,
167.02392375, 125.05120764, 110.35189406, 137.84965955, 135.69712767,
133.58192482, 132.36280398, 132.31858306, 134.45862906, 132.1907518]])
b =a**2
mask=np.array([[0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 1, 1, 0.56],
[0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 1, 1, 0.56],
[0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 0, 1, 1, 0.56, 0.94, 1,0.7,1,0, 0, 1, 1, 0.56]])
tempImg=np.zeros_like(a)
Проблема, с которой вы столкнулись, была двоякой.Сначала вы пытались индексировать в tempImg
индексы с плавающей точкой из других ваших массивов (tempImg=tempImg[]
).
Решение для этого:
for i in range (0, len(a)):
tempImg[i] = np.where(mask[i] == 1, a[i], b[i])
Второе и самое важное , вы проходили цикл, когда вам совсем не нужно было делать это!
Векторизованное решение с использованием numpy:
tempImg = np.where(mask == 1, a, b)