在一个多维非零元素数组中,找到每行的模式的最有效方法是什么?
举例来说:
[
[0. 0.4 0.6 0. 0.6 0. 0.6 0. 0. 0.6 0. 0.6 0.6 0.6 0. 0. 0. 0.6
0. 0. 0. 0. 0. 0. 0. 0. 0.5 0.6 0. 0. 0.6 0.6 0.6 0. 0. 0.6
0.6 0.6 0. 0.5 0.6 0.6 0. 0. 0.6 0. 0.6 0. 0. 0.6],
[0. 0.1 0.2 0.1 0. 0.1 0.1 0.1 0. 0.1 0. 0. 0. 0.1 0.1 0. 0.1 0.1
0. 0.1 0.1 0.1 0. 0.1 0.1 0.1 0. 0.1 0.2 0. 0.1 0.1 0. 0.1 0.1 0.1
0. 0.2 0.1 0. 0.1 0. 0.1 0.1 0. 0.1 0. 0.1 0. 0.1]
]
上面的模式是[0, 0.1]
,但理想情况下我们希望返回[0.6, 0.1]
。
3条答案
按热度按时间oalqel3c1#
您将使用与this问题(在@yatu的评论中提到)相同的方法,但改为调用
numpy.nonzero()
方法。为了只得到非零元素,我们可以调用
nonzero
方法,它将返回非零元素的索引。如果a是一个numpy数组,我们可以使用这个命令:a[nonzero(a)]
示例查找模式(从其他答案中构建代码):
如果你想得到每一行的模式,只需使用一个遍历数组的循环:
f8rj6qna2#
从这个answer中删除零元素:
67up9zun3#
受this answer的启发,您可以将
stats.mode
与np.nan
一起使用你就会得到
模式:
计数:
注意如果计数轴上沿着的值都是np.nan,则模式未定义。