使用矩阵表示法将超过累积和的向量的元素归零



我有一个向量x = [x_1, ..., x_n]和一个阈值t

定义累计总和:S_m = x_1 + x_2 + ... + x_m

jS_{j-1} < t <= S_j.

我想在这个向量中将所有元素x_ii > j设置为0,并将x_j设置为t - S_{j-1}。有没有一种方法可以把这个运算写在矩阵向量乘法中?

类似的东西?

>>> x = np.array([0, 3, 5, 3, 2, 6, 7, 9, 4, 2])
>>> t = 13
>>> S = x.cumsum()
>>> j = np.argmax(t < S)
>>> x[j:] = 0
>>> x[j] = t - S[j-1]
>>> x
array([0, 3, 5, 3, 2, 0, 0, 0, 0, 0])

最新更新