2013-07-09 3 views
1

У меня странное поведение с этим очень простым кодомPython багги гистограмма?

import numpy as np 
[y, binEdges] = np.histogram(x, xout) 

где х и XOUT являются Numpy массивов (XOUT описывает края бункеров, которые равномерно распределенные).

Если я

np.sum(y) 

значение не равно количеству элементов в х (x.shape), это значение намного меньше, то x.shape и я не могу понять, почему. Это ошибка np.histogram? Если вам нужно, я могу загрузить массивы x и xout numpy, но они очень длинные (x.shape - 19133 float64, а xout.shape - 1360 float64). Дайте мне знать, если я сделал что-то неправильно в приведенном выше коде.

+3

может быть фактический диапазон значений в х превышает XOUT, вы можете попытаться сделать 'np.histogram (х, Бункеры-100)' чтобы увидеть, выходит ли сумма y правильно? – nye17

+0

Привет, вы правы xD np.max (xout) opensw

ответ

1

Попробуйте это:

y.sum() + (x < xout[0]).sum() + (x > xout[-1]).sum() 
+0

Thx, проблема теперь исправлена ​​xD прочитать приведенные выше комментарии :) Я инициализировал неправильным образом переменную xout – opensw

1

Используйте это, чтобы вычислить xout правильно, п это число бункеров.

xout = np.linspace(floor(x.min()), ceil(x.max(), n) 

, а затем вызвать функцию гистограммы:

[y, binEdges] = histogram(x, xout) 
+0

Thx, я исправил проблему xD прочитал выше комментарии xD проблема была xout – opensw

Смежные вопросы