gpt4 book ai didi

python - 如何在 numpy 中对二维数组进行 bin?

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:11 26 4
gpt4 key购买 nike

我是 numpy 的新手,我有一个 2D 对象数组,我需要将它们放入一个较小的矩阵中,然后计算每个容器中的对象数量以制作热图。我按照答案 on this thread创建 bins 并对一个简单数组进行计数,但我不确定如何将其扩展到 2 维。这是我到目前为止所拥有的:

data_matrix = numpy.ndarray((500,500),dtype=float)
# fill array with values.

bins = numpy.linspace(0,50,50)
digitized = numpy.digitize(data_matrix, bins)

binned_data = numpy.ndarray((50,50))
for i in range(0,len(bins)):
for j in range(0,len(bins)):
k = len(data_matrix[digitized == i:digitized == j]) # <-not does not work
binned_data[i:j] = k

附言数组上的 [digitized == i] 符号将返回一个二进制值数组。我在任何地方都找不到关于这个符号的文档。一个链接将不胜感激。

最佳答案

您可以将数组重新整形为反射(reflect)所需 block 结构的四维数组,然后在每个 block 内沿两个轴求和。示例:

>>> a = np.arange(24).reshape(4, 6)
>>> a
array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]])
>>> a.reshape(2, 2, 2, 3).sum(3).sum(1)
array([[ 24, 42],
[ 96, 114]])

如果 a 的形状为 m, n,则 reshape 应具有以下形式

a.reshape(m_bins, m // m_bins, n_bins, n // n_bins)

关于python - 如何在 numpy 中对二维数组进行 bin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com