我有一个有趣的谜题。假设您有一个numpy2d数组,其中每一行对应一个测量事件,每一列对应不同的测量变量。此数组中的另一列指定进行测量的日期。这些行是根据时间戳排序的。每天有几个(或许多)测量。目标是确定与新的一天相对应的行,并从该天的后续行中减去相应的值。你知道吗
我通过一个循环来解决这个问题,循环了几天,创建了一个布尔向量来选择合适的行,然后减去第一个选中的行。这种方法可行,但感觉不优雅。有更好的方法吗?你知道吗
只是一个小例子。下面的几行定义了一个矩阵,其中第一列 是一天,其余两个是测量值
before = array([[ 1, 1, 2],
[ 1, 3, 4],
[ 1, 5, 6],
[ 2, 7, 8],
[ 3, 9, 10],
[ 3, 11, 12],
[ 3, 13, 14]])
在流程结束时,我希望看到以下数组:
array([[1, 0, 0],
[1, 2, 2],
[1, 4, 4],
[2, 0, 0],
[3, 0, 0],
[3, 2, 2],
[3, 4, 4]])
PS请帮我找到一个更好的,更丰富的标题为这个职位。我没有主意了
^{} 是一个方便的函数:
详细解释
如果您选择第一列并搜索它自己,您将得到这些特定值的最小索引:
然后,您可以使用它来构造将通过索引减去的矩阵:
您需要生成第一列
0
,这样它们就不会被减去。你知道吗最后,减去两个矩阵得到所需的输出:
相关问题 更多 >
编程相关推荐