2009-02-20 8 views
1

Je travaille sur quelques graphiques et statistiques pour le travail et je ne suis pas sûr de savoir comment je peux faire des statistiques en utilisant numpy: J'ai une liste de prix et une autre de basePrices. Et je veux savoir combien de prix sont avec X pour cent au-dessus du prix de base, combien sont avec Y pour cent au-dessus du prix de base.Statistiques avec numpy

Existe-t-il un moyen simple de le faire en utilisant numpy?

Répondre

7

Supposons que vous avez

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

Ensuite, le nombre de prix qui sont plus de 10% au-dessus du prix de base sont

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

Oh, je pensais qu'il y a quelque chose de plus compliqué que cela. Ça a l'air assez bien. Merci, dF! – hyperboreean

+1

Vous devriez accepter cette réponse. –

1

En plus de la réponse de df, si vous voulez connaître le spécifique prix qui sont au-dessus des prix de base, vous pouvez faire:

prix [prix> (1.10 * prix_basés)]

0

Je ne pense pas que vous avez besoin 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

Oui, vous avez raison, j'ai dit numpy parce que j'allais utiliser leur mise en œuvre de tableau qui semble plus rapide. J'ai environ 800k prix, donc j'espère obtenir un gain de vitesse en utilisant cela. Merci. – hyperboreean

2

Juste pour l'amusement, voici une légèrement différente sur la réponse dF:

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

Ensuite, vous pouvez extraire le nombre qui sont 5% au-dessus , 10% ci-dessus, etc. avec

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