У меня есть массив x
с такими данными: [3.1, 3.0, 3.3, 3.5, 3.8, 3.75, 4.0] и т. Д. У меня есть другая переменная y
с соответствующими 0 и 1 с [0, 1, 0] Я хочу получить из этих новых отдельных массивов разделенное
freq, bins = np.histogram(X, 5)
, которое позволит мне узнать срезы для каждого бина.Но как мне получить эти данные?Например, если у меня есть два контейнера (от 3 до 3,5 и от 3,5 до 4), я хочу, чтобы два получили взамен два массива, как это [3.1, 3.2, 3.4, ...] и [3.6, 3.7, 4, ...].Кроме того, я хочу, чтобы переменная y
была разбита и отсортирована таким же образом.
Сводка : я ищу код для разбивки x
на ячейки с соответствующими y
ценности.
Я думал о том, чтобы что-то сделать с помощью переменной bins
, но я не уверен, как разделить данные по отсечкам.Я ценю любую помощь.
Если я строю нормальную гистограмму X, я получаю это:
Используя код:
d=plt.hist(X, 5, facecolor='blue', alpha=0.5)
Рабочий код:
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return zip(a, b)
def getLists(a, b, bin_obj):
index_list = []
for left, right in pairwise(bin_obj):
indices = np.where((a >= left) & (a < right))
index_list += [indices[0]]
X_ret = [a[i] for i in index_list]
Y_ret = [b[i] for i in index_list]
return (X_ret, Y_ret)
freq, bins = np.histogram(X[:, 0], 5)
Xnew, Ynew = getLists(X[:, 0], Y, bins)