二维直方图的 numpy 数字化

numpy digitize for 2 dimensional histogram

我正在搜索 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.]]

我想找出直方图的每个元素代表的指数,例如(第 1 行,第 1 列 -> 7 -> 应计算 7 个索引)。 我花了很多时间试图关注 this post, but I get stuck at one place (I can explain where, if no better approach is known). Another potential duplicate is here 但这也没有解决问题。

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

谢谢!

你想要scipy.stats.binned_statistic_2d:

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

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

a shape (2,N) ndarray, where each row gives the bin numbers in the corresponding dimension.