Во-первых, у меня есть сжатый numpy массив c и маска m, которая использовалась для генерации c из полного массива a.
Я хочу вывести восстановленный массив b той же формы, что и исходный массив a, но с результатами сжатого массива. Следующий код работает для этого, но я не знаю, как сделать его эффективным. Любые рекомендации будут оценены
import numpy as np
a = np.asarray((1, 2, 3, 4, 5, 6, 7, 8, 9))
m = np.array((True,True,True,True,False,False,True,True,True))
c = np.ma.compressed(np.ma.masked_where(m==False, a))
i=0
j=0
b = np.zeros(a.size)
while (i<a.size):
if (m[i] == True):
b[i] = c[j]
j = j+1
i = i+1
b
, что приводит к:
array([1., 2., 3., 4., 0., 0., 7., 8., 9.])