2016-09-27 120 views
0

我有一個大小爲a * 2的numpy數組。 (a的典型大小是100)。第一列是x_smallest和x_largest之間的值。第二列是相應的y值。現在幾乎所有的x值都是唯一的,所以我想將它們分組。就像第一組從x_smallest值到x_1一樣。第二組從x_1到x_2。 (x_smallest < x_1 < ... x_largest)。這應該是可調整的,這樣我可以找到一個有用的大小。我應該提到x值是非整數,但y值是整數。 (y值介於1和N之間)現在我想知道每組「n> 1」y值與「1」y值的比例。下面是一個例子陣列的一小部分:在數組中分組值

2.750000000000000000e+00,2.000000000000000000e+00 
3.100000000000000089e+00,5.000000000000000000e+00 
2.649999999999999911e+00,2.000000000000000000e+00 
2.500000000000000000e+00,2.000000000000000000e+00 
3.100000000000000089e+00,2.000000000000000000e+00 
2.799999999999999822e+00,5.000000000000000000e+00 
3.450000000000000178e+00,4.000000000000000000e+00 
3.200000000000000178e+00,5.000000000000000000e+00 
3.200000000000000178e+00,3.000000000000000000e+00 
2.399999999999999911e+00,1.000000000000000000e+00 

輸出陣列可以是這樣的:(這裏的x_values是X_I的區域的中點與X_I + 1)

1.5, 0 
2.5, 0.2 
3.5, 0.5 

這裏的輸出示例顯然不適合示例數組。你有什麼想法,這可以輕鬆完成。我只能考慮製作很多特定的if else命令,這對於一般情況來說不會很有幫助。

+0

我不明白你的意思是*「n> 1」y值與「1」y值的比例。「*您能給出一個匹配的輸入和輸出示例嗎? *「我只能考慮製作很多特定的命令」 - 你能告訴我們代碼的樣子嗎? –

+0

y值是整數。因此,對於特定的一組x值,我可以使用下列y值[1,1,2,2,4,5](如果它是排序的)。現在我的意思是'4/2'的比例,因爲'4'值大於1,'2'值的值爲1。 – HighwayJohn

回答

0

好吧,我想我自己解決了它。這裏是萬一有人的解決方案有一個類似的問題,並找到了這個問題:

numgroup = 5 # Number of Groups 
dmimax = numpy.amax(dmivsstasta[:, 0]) # Gets x_largest 
dmimin = numpy.amin(dmivsstasta[:, 0]) # Gets x_smallest 
stamax = numpy.amax(dmivsstasta[:, 1]) # Gets y_largest 
stepsize = (dmimax-dmimin)/5.0 # Determines size of a group 

grouparray = numpy.zeros((5, stamax+1)) # Creates array in which everything is saved 


for x in range(numgroup): 
    grouparray[x, 0] = dmimin+stepsize/2.0+x*stepsize # Saves midpositon of 
                 each group at first column 
print(grouparray) # Just to check values 
print(dmimin) 
print(dmimax) 
print(stepsize) 

for x1 in range(numgroup): # Iterates over all values 
    for x2 in range(rd): 
     if (grouparray[x1, 0]-stepsize/2.0) <= dmivsstasta[x2, 0] 
     < (grouparray[x1, 0]+stepsize/2.0): 
      grouparray[x1, dmivsstasta[x2, 1]] += 1 

print(grouparray) 

唯一缺少的一部分,是爲了計算比例,這是現在很容易與grouparray做