Гистограмма, объединяющая два набора данных в отношении друг друга - PullRequest
1 голос
/ 11 октября 2019

У меня есть два списка одинаковой длины. Каждый элемент в одном списке соответствует тому же индексу в другом списке. Я гистограммировал один из двух списков:

xnums, xbins = np.histogram(x)

Мне нужен быстрый способ связать соответствующие данные соответственно, то есть связать данные в y в соответствии с тем, как x был связан. Я пытался:

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)

, но это медленно, и по некоторым причинам он пропускает некоторые значения.

Есть ли более эффективный способ сделать это?

1 Ответ

0 голосов
/ 11 октября 2019

Если я правильно понимаю, то вы хотите использовать xbins в качестве ybins и найти соответствующий ynums (то есть число).

Вы хотите np.digitize(). Дайте ему y и xbins, и он даст вам индексы бинов, в которые попадают элементы y.

Тогда вы можете использовать np.bincount() для подсчетавсе и получите ynums.

y_digitized = np.digitize(y, xbins)
ynums = np.bincount(y_digitized)
...