![](/img/trans.png)
[英]How to find longest consecutive ocurrence of non-zero elements in 2D numpy array
[英]Find mode of non-zero elements in array Numpy
在非零元素的多维数组中查找每行模式的最有效方法是什么?
例如:
[
[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]
。
您将使用与此问题相同的方法(在@yatu的注释中提到),但是调用numpy.nonzero()
方法。
为了只获取非零元素,我们可以调用nonzero
方法,该方法将返回非零元素的索引。 如果a是一个numpy数组,我们可以使用以下命令执行此操作:
a[nonzero(a)]
查找模式的示例(从其他答案构建代码):
import numpy as np
from scipy import stats
a = np.array([
[1, 0, 4, 2, 2, 7],
[5, 2, 0, 1, 4, 1],
[3, 3, 2, 0, 1, 1]]
)
def nonzero_mode(arr):
return stats.mode(arr[np.nonzero(arr)]).mode
m = map(nonzero_mode, a)
print(m)
如果要获取每一行的模式,只需使用遍历数组的循环即可:
for row in a:
print(nonzero_mode(row))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.