【发布时间】:2017-05-02 14:39:54
【问题描述】:
我问了一个问题here,关于在固定长度的二维数组上进行数值积分。现在如果积分长度不固定怎么办?对于每个单元格作为起点,我想继续积分,直到它遇到一个具有相反符号值的单元格。所以假设在从下到上的列中它是[1,2,5,4,-2,-3,2],如果我对第一个元素进行积分,它将整合前四个元素(它们都是正数)。如果我从第五个元素开始,它只会整合-2 和-3。有没有办法对其进行矢量化或加速,而不是使用双循环来首先找到每个单元格的积分长度然后进行积分?
或者一个简化的问题只是整合积极的元素: 示例:
data = [
-2, -1, 4, -2,-1;
1, 2, 3, 4, 5;
5, -4, -3, 2, 5;
3, -3, -9, 5, 7;
2, -2, 7, -5, 1;
2, 3, 1, -3, -3]
integrated_data = [
0, 0, 7, 0, 0;
13, 2, 3, 11, 18;
12, 0, 0 7, 13;
7, 0, 0, 5, 8;
4, 0, 8, 0, 1;
2, 3, 1, 0, 0]
【问题讨论】:
-
请添加一个示例,例如一个 [5 , 5] 矩阵和预期输出。
-
你问的是 Matlab 还是 NumPy?
-
为什么integrated_data的左上角有个0?不应该是-2吗?
-
您的“集成数据”示例看起来像应用
np.maximum(array, 0),然后使用cumsum。
标签: arrays matlab numpy vectorization cumsum