Как поделить элементы массива друг на друга?

Необходимо из данного массива:

s=pd.Series(np.linspace(0,20,10))

создать массив, который состоит из результатов деления элементов исходного массива друг на друга.

Например, для массива: (1, 2, 4, 6), желаемый результат: (NAN, 2, 2, 1.5).


Ответы (1 шт):

Автор решения: MaxU

Воспользуйтесь методом Series.pct_change():

res = 1 + s.pct_change()

Примеры:

In [3]: s1 = pd.Series([1, 2, 4, 6])

In [4]: 1 + s1.pct_change()
Out[4]:
0    NaN
1    2.0
2    2.0
3    1.5
dtype: float64

In [5]: s2 = pd.Series(np.linspace(0,20,10))

In [6]: s2
Out[6]:
0     0.000000
1     2.222222
2     4.444444
3     6.666667
4     8.888889
5    11.111111
6    13.333333
7    15.555556
8    17.777778
9    20.000000
dtype: float64

In [7]: 1 + s2.pct_change()
Out[7]:
0         NaN
1         inf
2    2.000000
3    1.500000
4    1.333333
5    1.250000
6    1.200000
7    1.166667
8    1.142857
9    1.125000
dtype: float64
→ Ссылка