使用numpy删除循环

yyhrrdl8  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(112)
def demand_y(self, prices):
    markt_prices = prices.copy()
    y = [0]*len(prices)
    for mp in range(len(markt_prices)):
        for p in prices:
            if(p >= markt_prices[mp]):
                y[mp] +=1
    return y

我试图绘制一个需求和供应图表,这个函数返回给我y数据点(有多少人愿意以特定价格购买)。
这些函数可以工作,但我相信有一种方法可以用numpy更有效地完成它。

kgqe7b3p

kgqe7b3p1#

IIUC,您可以:

prices = np.array([10, 20, 30, 10, 20, 50])
print((prices[:, None] <= prices[None, :]).sum(axis=1))

图纸:

[6 4 2 6 4 1]
piztneat

piztneat2#

按列广播比较和求和:

>>> prices = np.random.rand(10)
>>> prices
array([0.5875545 , 0.25082088, 0.60516259, 0.74796803, 0.20443016,
       0.46121859, 0.52371397, 0.31880511, 0.26756963, 0.75844983])
>>> np.greater_equal.outer(prices, prices).sum(0)
array([ 4,  9,  3,  2, 10,  6,  5,  7,  8,  1])
>>> (prices[:, None] >= prices).sum(0)
array([ 4,  9,  3,  2, 10,  6,  5,  7,  8,  1])

相关问题