我有一个向量x = [x_1, ..., x_n]
和一个阈值t
。
定义累计总和:S_m = x_1 + x_2 + ... + x_m
。
设j
为S_{j-1} < t <= S_j.
我想在这个向量中将所有元素x_i
和i > 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])