2009-02-20 2 views
1

Я работаю над некоторыми графиками и статистикой для работы, и я не уверен, как я могу сделать некоторые статистические данные с использованием numpy: у меня есть список цен и еще один из basePrices. И я хочу знать, сколько цен с X процентами выше basePrice, сколько с Y процентов выше basePrice.Статистика с 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

+1

Вы должны принять этот ответ. –

1

В дополнение к ответу ДФ, если таковая требуется знать конкретное цены, которые выше базовых цен, вы можете сделать:

цены [цены> (1.10 * базовые_цены)]

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 
+0

Да, вы правы, я сказал numpy, потому что я собирался использовать их реализацию массива, которая кажется быстрее. У меня около 800 тысяч цен, поэтому я надеюсь получить выигрыш в скорости, используя это. Благодарю. – hyperboreean

2

Просто для развлечения, здесь немного другая взять на себя ответ ДФ в:

>>> 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 
Смежные вопросы