배열의 최대 값에 대한 세 번째 저장소가 있습니다. 여기에 오타가 있다고 가정하고 max_x는 "max (my_array [:, 0])"대신 "max (my_array [:,1])"). 마지막 빈에 1 (또는 임의의 양수)을 추가하여이를 피할 수 있습니다.
또한 올바르게 이해한다면, 하나의 변수를 다른 변수로 비우기를 원하므로 아래 예제에서이를 나타냅니다. 재 배열을 사용하는 경우 (훨씬 느림) matplotlib.mlab에 여러 가지 기능이 있습니다 (예 : mlab.rec_groupby 등).
:
어쨌든, 결국, 당신은 빠른 예를 들어
def bin_by(x, y, nbins=30):
"""
Bin x by y.
Returns the binned "x" values and the left edges of the bins
"""
bins = np.linspace(y.min(), y.max(), nbins+1)
# To avoid extra bin for the max value
bins[-1] += 1
indicies = np.digitize(y, bins)
output = []
for i in xrange(1, len(bins)):
output.append(x[indicies==i])
# Just return the left edges of the bins
bins = bins[:-1]
return output, bins
(x와 y가 같은 길이입니다 가정, Y의 값에 의해 빈 X에) 이런 일이있을 수 있습니다
In [3]: x = np.random.random((100, 2))
In [4]: binned_values, bins = bin_by(x[:,0], x[:,1], 2)
In [5]: binned_values
Out[5]:
[array([ 0.59649575, 0.07082605, 0.7191498 , 0.4026375 , 0.06611863,
0.01473529, 0.45487203, 0.39942696, 0.02342408, 0.04669615,
0.58294003, 0.59510434, 0.76255006, 0.76685052, 0.26108928,
0.7640156 , 0.01771553, 0.38212975, 0.74417014, 0.38217517,
0.73909022, 0.21068663, 0.9103707 , 0.83556636, 0.34277006,
0.38007865, 0.18697416, 0.64370535, 0.68292336, 0.26142583,
0.50457354, 0.63071319, 0.87525221, 0.86509534, 0.96382375,
0.57556343, 0.55860405, 0.36392931, 0.93638048, 0.66889756,
0.46140831, 0.01675165, 0.15401495, 0.10813141, 0.03876953,
0.65967335, 0.86803192, 0.94835281, 0.44950182]),
array([ 0.9249993 , 0.02682873, 0.89439141, 0.26415792, 0.42771144,
0.12292614, 0.44790357, 0.64692616, 0.14871052, 0.55611472,
0.72340179, 0.55335053, 0.07967047, 0.95725514, 0.49737279,
0.99213794, 0.7604765 , 0.56719713, 0.77828727, 0.77046566,
0.15060196, 0.39199123, 0.78904624, 0.59974575, 0.6965413 ,
0.52664095, 0.28629324, 0.21838664, 0.47305751, 0.3544522 ,
0.57704906, 0.1023201 , 0.76861237, 0.88862359, 0.29310836,
0.22079126, 0.84966201, 0.9376939 , 0.95449215, 0.10856864,
0.86655289, 0.57835533, 0.32831162, 0.1673871 , 0.55742108,
0.02436965, 0.45261232, 0.31552715, 0.56666458, 0.24757898,
0.8674747 ])]
희망이 조금 있습니다! 당신처럼 사용할 수 있습니다
histogram(a, bins=10, range=None, normed=False, weights=None, new=None)
: 여기
(hist_data, bin_edges) = histogram(my_array[:,0], weights=my_array[:,1])
중요한 점은 weights
인수를 사용하는 것입니다
I을 왜 "가중치"가 문서를 읽은 후 여기서 사용되는지 이해할 수 없습니다. 설명해 주시겠습니까? 요점이 요소를 배지에 할당하는 것일 뿐인데, 왜 저울이 역할을해야하는지 알지 못합니다. – user248237dfsf
나는 가중치 인자의 역할을보다 자세하게 설명 할 수 있도록 해답을 편집했다. 대답이 유용하다고 생각한다면 엄지 손가락을 올려주세요! :) – EOL
사실, np.histogram은 불행히도 그가 필요로하는 것을하지 않을 것입니다. 그는 각 bin에 boxplot을 만들기 위해 각 bin에 속하는 실제 값이 필요합니다. (또는 그것이 내 잘못이라고 생각하면 어쨌든, 저를 수정했습니다!) weights 매개 변수는 각 가중치에 각 값을 곱하기 때문에 빈의 수에 1을 더하는 대신 가중치 [i] . 이는 하나의 배열을 다른 배열의 값으로 binning하는 것과는 다른 효과이며, 관계없이 각 bin에 속하는 배열의 하위 집합을 반환하지는 않습니다. (아니면 내가 완전히 오해하고있는 것일까 요?) –