我有两个长度相等的列表。一个列表中的每个项目对应于另一列表中的相同索引。 我已经对两个列表之一进行了直方图:
xnums, xbins = np.histogram(x)
我需要一种快速的方法来相应地对相应的数据进行装箱,即与x的装箱方式相对应地将数据装在y中。 我尝试过:
ybins = []
for i in range(len(xnums)):
yi = []
for j in range(len(y)):
if x[j] >= xbins[i] and x[j] < xbins[i+1]:
yi.append(y[j])
elif i == len(xnums) and x[j] == max(x):
yi.append(y[j])
ybins.append(yi)
但这很慢,由于某种原因,它会丢失一些值。
有没有更有效的方法?
答案 0 :(得分:0)
如果我的理解正确,那么您想将xbins
用作ybins
,并找到相应的ynums
(即计数)。
您想要np.digitize()
。给它y
和xbins
,它将为您提供y
元素所属的bin的索引。
然后,您可以使用np.bincount()
来计算所有内容并获得ynums
。
y_digitized = np.digitize(y, xbins)
ynums = np.bincount(y_digitized)