微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

numpy 数字化二维直方图

如何解决numpy 数字化二维直方图

我正在搜索二维直方图的 np.digitize 函数

从这些代码行:

    H,xedges,yedges = np.histogram2d(coord[:,0],coord[:,1])
    H = H.T
    print(H)

我得到以下直方图:

[[ 7. 20. 16. 14. 10.  8. 16.  7. 10.  7.]
 [11. 11. 10. 10.  5. 10.  9. 12.  7.  7.]
 [13. 11. 13.  9. 13. 10. 14.  6.  9.  9.]
 [ 5.  5.  4.  5.  7. 13. 14. 11.  6. 10.]
 [14.  4. 11.  5.  7. 14.  6. 11. 11.  5.]
 [12.  9.  5.  7.  9. 14. 15. 15. 13. 12.]
 [ 5. 13. 15.  9. 10.  7. 10. 12.  7.  5.]
 [ 4. 10. 15.  7.  6. 10. 13.  5. 12. 12.]
 [12.  6. 11.  8.  5.  5. 13. 14. 13.  9.]
 [10. 11.  9.  8. 18. 13. 16.  8.  8. 13.]]

我想找出直方图的每个元素代表的索引,例如(应该计算第一行,第一列 -> 7 -> 7 个索引)。 我花了很多时间试图遵循 this post,但我被困在一个地方(如果没有更好的方法,我可以解释在哪里)。另一个潜在的重复项是 here,但这也不能解决问题。

那么有人知道如何解决这个问题吗?

谢谢!

解决方法

你想要scipy.stats.binned_statistic_2d

H,xedges,yedges,binnumber = scipy.stats.binned_statistic_2d(
    coord[:,0],coord[:,1],None,'count',expand_binnumbers=True)

前三个返回值与您的原始代码相同。第四个 (binnumber)` 是:

一个形状 (2,N) ndarray,其中每一行给出对应维度中的 bin 编号。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。