我想找到给定一维数组的所有峰值点,该数组是这样生成的:
vertical_projection = np.sum(projCopy, axis=0)
(此数组包含二进制图像每列中黑色像素的总和。)
当我打印这个数组时
[1213 1335 1335 1335 1335 1335 1335 1335 1335 1335 1335 1335 1335 1335
960 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 957 958 958 958 959 960 974 1072 1073
1072 1007 1008 1007 998 998 997 996 996 996 995 907 741 706
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 755 1331 1332]
所以我想打印峰值的所有数组索引,而不提供任何阈值来计算峰值
您可以使用
numpy.argwhere
和numpy.flatten
来接收所需的结果,如下例所示:输出:
干杯
在数组非零的位置分隔切片
在每个切片中,找到最大值
在每个切片中,划分达到最大值的子切片
现在返回每个子片的中间部分
1和2可以在阵列的单次传递过程中生成,3和4需要在每个切片中进行第二次局部传递
相关问题 更多 >
编程相关推荐