我有两个矩阵,prob
和 totalHigh
,它们的形状都是 axbxcxd
。其中,a
和 b
是坐标。以下是两个示例:
In [77]: prob[1,1,:]
Out[77]:
array([[ 0.09, 0.01, 0. , 0. , 0. ],
[ 0.81, 0.09, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. , 0. ]])
In [78]: totalHigh[1,1,:]
Out[78]:
array([[0, 1, 2, 3, 4],
[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6]])
totalHigh
包含有关结果的信息,但不幸的是涉及两个维度。相应地,prob
包含这些结果的概率。例如,在坐标 1,1
的结果 1
的总概率为 0.01+0.81
。
我该如何去除冗余的维度?
期望结果
simplifiedHigh[1,1,:]
array([0, 1, 2, 3, 4, 5, 6])
simplifiedProb[1,1,:]
array([0.09, 0.82, 0.09, 0, 0, 0, 0])
我该如何以最有效的方式获取它?
bincount
可能更快。 - Imanol Luengobincount
确实非常快! - DivakartotalHigh[1,1,:]
?如果没有,我认为迭代是有意义的。 - Divakarnp.add.reduceat
以矢量化的方式处理整个数组。 - Divakar