Совокупное вычитание из первого ряда - PullRequest
0 голосов
/ 12 октября 2018

У меня есть одна серия и один DataFrame, все целые числа.

s = [10,
     10,
     10]

m = [[0,0,0,0,3,4,5],
     [0,0,0,0,1,1,1],
     [10,0,0,0,0,5,5]]

Я хочу вернуть матрицу, содержащую совокупные различия, вместо существующего числа.

Вывод:

n = [[10,10,10,10,7,3,-2],
     [10,10,10,10,9,8,7],
     [0,0,0,0,0,-5,-10]]

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы можете напрямую рассчитать совокупную разницу, используя np.subtract.accumulate:

# make a copy
>>> n = np.array(m)
# replace first column
>>> n[:, 0] = s - n[:, 0]
# subtract in-place                                                                                           
>>> np.subtract.accumulate(n, axis=1, out=n)                                                                        
array([[ 10,  10,  10,  10,   7,   3,  -2],                                                                         
       [ 10,  10,  10,  10,   9,   8,   7],                                                                         
       [  0,   0,   0,   0,   0,  -5, -10]])                                                                        
0 голосов
/ 12 октября 2018

Сначала рассчитать сумму данных по кадрам, а затем вычесть из Серии:

import pandas as pd

s = pd.Series(s) 
df = pd.DataFrame(m)

-df.cumsum(1).sub(s, axis=0)

#    0   1   2   3  4  5   6
#0  10  10  10  10  7  3  -2
#1  10  10  10  10  9  8   7
#2   0   0   0   0  0 -5 -10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...