2009-02-20 210 views
1

我在一些情節和統計工作中工作,我不知道如何使用numpy做一些統計信息:我有一個價格列表和另一個basePrices。我想知道有多少價格高於basePrice的百分之X,有多少百分比高於basePrice的Y百分比。numpy的統計信息

有沒有簡單的方法來做到這一點使用numpy?

回答

7

說你有

>>> prices = array([100, 200, 150, 145, 300]) 
>>> base_prices = array([90, 220, 100, 350, 350]) 

然後價格是基礎價格之上10%以上是

>>> sum(prices > 1.10 * base_prices) 
2 
+0

哦,我覺得還有一些比這更復雜的東西。看起來不錯。謝謝,dF! – hyperboreean 2009-02-20 16:17:35

+1

你應該接受這個答案。 – 2011-09-30 15:30:20

1

除了DF的答案,如果你想知道具體的數目價格高於基準價格,你可以這樣做:

價格[價格>(1.10 * base_prices)]

0

我不認爲你需要numpy的...

prices = [40.0, 150.0, 35.0, 65.0, 90.0] 
baseprices = [45.0, 130.0, 40.0, 80.0, 100.0] 
x = .1 
y = .5 

# how many are within 10% 
len([p for p,bp in zip(prices,baseprices) if p <= (1+x)*bp]) # 1 

# how many are within 50% 
len([p for p,bp in zip(prices,baseprices) if p <= (1+y)*bp]) # 5 
2

只是爲了取樂,這裏有一個稍微不同的看法上DF的回答是:

>>> prices = array([100, 200, 150, 145, 300]) 
>>> base_prices = array([90, 220, 100, 350, 350]) 
>>> ratio = prices/base_prices 

然後你就可以提取高於5%的數量,10%以上等

>>> sum(ratio > 1.05) 
2 
>>> sum(ratio > 1.10) 
2 
>>> sum(ratio > 1.15) 
1