Где «отсутствует» может означать либо nan
, либо np.masked
, в зависимости от того, что проще всего реализовать с помощью.Как эффективно «растягивать» приведенные значения в массиве по отсутствующим
Например:
>>> from numpy import nan
>>> do_it([1, nan, nan, 2, nan, 3, nan, nan, 4, 3, nan, 2, nan])
array([1, 1, 1, 2, 2, 3, 3, 3, 4, 3, 3, 2, 2])
# each nan is replaced with the first non-nan value before it
>>> do_it([nan, nan, 2, nan])
array([nan, nan, 2, 2])
# don't care too much about the outcome here, but this seems sensible
Я могу видеть, как вы могли бы сделать это с цикл:
def do_it(a):
res = []
last_val = nan
for item in a:
if not np.isnan(item):
last_val = item
res.append(last_val)
return np.asarray(res)
Есть ли более быстрый способ векторизации это?
Хм, это не работает, если x равно 2d, но я думаю, что это было не то, о чем я просил – Eric
@ Эрик: Да, я не знаю, что вы даже хотели бы для двумерного ввода. – user2357112
Я бы хотел, чтобы он обрабатывал каждую строку независимо, как если бы это был 1d – Eric