Эффективный способ сделать это состоит в том, чтобы предварительно вычислить размер результата, убедиться, что insertNanIndex
был достаточно большим, чтобы служить маской, и вставить a
в правильные индексы сразу. Прямо сейчас вы буквально перераспределяете весь массив для каждого NaN. Numpy Функция insert
будет в равной степени неэффективной, поскольку она будет выполнять ту же операцию.
Если, как в вашем примере, число нулей соответствует количеству элементов a
, вы можно выделить массив на основе insertNanIndex
и замаскировать его напрямую:
result = nan(size(insertNanIndex));
result(~insertNanIndex) = a;
Если число нулей в insertNanIndex
не равно размеру a
, вы можете дополнить или обрезать его, но в этом случае это становится более спорным относительно того, что все это значит.