Python Numpy:np.cumsum 但是减法,从单个值中减去所有数组值,-=

Python Numpy: np.cumsum but subtraction, subtract all array values from single value, -=

我想做一些类似 cumsum 的事情,但是有减法。我需要用矢量化来做到这一点,因为我的数据集长度实际上是 100,000 而不是 3。

我有两个数组:

a = np.array([-7.021, -1.322, 3.07])
b = np.array([[-1.592, -1.495, -1.415, -1.363, -0.408, -0.36, -0.308],
              [-0.287, -0.249, -0.226, -0.206, -0.197, -0.165, -0.075],
              [-0.389, -0.237, 0.144, 0.198, 0.539, 0.921, 0.932]])

我想从数组 A 中减去数组 B 的每一行 值。对于上面的示例,答案如下喜欢(如果在手动数学中出现错字,我们深表歉意):

result = np.array([[-5.429, 3.934, 2.519, 1.156, 0.748, -0.388, 0.08 ],
                   [-1.035, 0.786, 0.56, 0.354, 0.157, 0.008, 0.083],
                   [3.459, 3.696, 3.552, 3.354, 2.815, 1.894, 0.962]])

我已尝试使用以下指标进行澄清:

results = np.array([[a[0] - b[0][0], results[0][0] - b[0][1], results[0][1] - b[0][2] ...],
                    [a[1] - b[1][0], results[1][0] - b[1][1], results[1][1] - b[1][2] ...],
                    [a[2] - b[2][0], results[2][0] - b[2][1], results[2][1] - b[2][2] ...]])

你可以运行:

result = a.reshape(-1, 1) - b.cumsum(axis=1)

结果是:

[[-5.429 -3.934 -2.519 -1.156 -0.748 -0.388 -0.08 ]
 [-1.035 -0.786 -0.56  -0.354 -0.157  0.008  0.083]
 [ 3.459  3.696  3.552  3.354  2.815  1.894  0.962]]

a.reshape(-1, 1) 将原始(1 行)向量更改为 1 列 大批。然后你从 b.

中减去每行的累计和