Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 第一行的累积减法_Python_Algorithm_Pandas_Math_Matrix - Fatal编程技术网

Python 第一行的累积减法

Python 第一行的累积减法,python,algorithm,pandas,math,matrix,Python,Algorithm,Pandas,Math,Matrix,我有一个系列和一个数据帧,都是整数 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]] 首先按行计算数据帧的总和,然后从序列中减去: impor

我有一个系列和一个数据帧,都是整数

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]]

首先按行计算数据帧的总和,然后从序列中减去:

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

您可以使用np.subtract.accumulate直接计算累积差异:


dataframe在哪里?m=dataframe/matrix您向我们展示的内容看起来像Python列表。
# 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]])