我正在处理一些工作的情节和统计数据,但我不确定如何使用 numpy 进行一些统计:我有一个价格列表和另一个 basePrices。我想知道有多少价格高于basePrice X%,有多少价格高于basePrice Y%。
有没有一种简单的方法可以使用 numpy 做到这一点?
说你有
>>> prices = array([100, 200, 150, 145, 300])
>>> base_prices = array([90, 220, 100, 350, 350])
那么高于基准价格 10% 以上的价格数量是
>>> sum(prices > 1.10 * base_prices)
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
除了 df 的回答,如果您想知道高于基本价格的具体价格,您可以这样做:
价格[价格 > (1.10 * base_prices)]
我不认为你需要 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