包含每个箱子中权重的最大值的N维直方图

时间:2017-08-14 18:38:05

标签: python numpy histogram

我在N维中有一组M个点,每个点都有一个相关的"重量" value(基本上是M浮点数组)。使用numpy' s histogramdd()我可以生成设置的N维直方图。

如果我使用weights中的histogramdd()参数,我会回来:

  

属于落入每个箱子的样本的权重之和。

下面的代码显示了创建这些数组的热点:

import numpy as np

# N-dimensional M points.
N_dim, M = 3, 1000
points = np.random.uniform(0., 1., size=(M, N_dim))

# Weight for each point
weights = np.random.uniform(0., 1., M)

# N-dimensional histogram.
histo = np.histogramdd(points)[0]
# Histogram containing the sum of the weights in each bin.
weights_histo = np.histogramdd(points, weights=weights)[0]

而不是这个,我需要为points创建N维直方图,其中存储在每个bin中的值是与所有权重相关的所有权重中的最大权重值。落在那个垃圾箱内的点。

即:我只需要存储在每个箱子中的最大重量,而不是所有重量的总和。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

binned_statistic中有多个scipy.stats个功能。 'max'是默认统计信息之一,但您也可以使用任何可调用的。

import numpy as np
from scipy.stats import binned_statistic_dd

# N-dimensional M points.
N_dim, M = 3, 1000
points = np.random.uniform(0., 1., size=(M, N_dim))

# Weight for each point
weights = np.random.uniform(0., 1., M)

weights_histo, bin_edges, bin_indices = binned_statistic_dd(points,
                                                            weights,
                                                            statistic=np.max,
                                                            bins=5)

print weights_histo.shape # (5,5,5)