Как заменить 0 пропущенными значениями в соответствии с серией чисел в массиве numpy? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть массив numpy с серией ints. Я хочу заполнить 0 s недостающими значениями в серии.

Первоначально у меня есть эти значения в столбце кадра данных pandas, но для простоты я решил опубликовать вопрос используя вместо этого массив numpy.

>>> a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
>>> a
>>> array([15, 25,  0, 45,  0,  0, 75, 85])

Я хочу, чтобы вывод был следующим:

>>> array([15, 25,  35, 45,  55,  65, 75, 85])

Я хочу решить эту проблему без использования циклов, так как это приведет к поражению цели использования numpy или pandas, и код будет намного медленнее с использованием циклов.

Я бы не хотел заменять весь столбец новыми значениями, которые в качестве побочного эффекта обновили бы 0 как ну.

Я только хочу обновить 0 с пропущенными значениями в соответствии с серией.

1 Ответ

3 голосов
/ 05 мая 2020

Это прямо с pandas. Вы можете применить линейную интерполяцию, используя interpolate (метод интерполяции по умолчанию linear):

a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
s = pd.Series(a)
s.mask(s.eq(0)).interpolate()

0    15.0
1    25.0
2    35.0
3    45.0
4    55.0
5    65.0
6    75.0
7    85.0
dtype: float64
...