我在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中的值是与所有权重相关的所有权重中的最大权重值。落在那个垃圾箱内的点。
即:我只需要存储在每个箱子中的最大重量,而不是所有重量的总和。
我怎么能这样做?
答案 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)