75278350@qq.com 发表于 2024-5-22 15:26:54

arange函数

大神求助!目的是设置结果是当数量<=5000时,执行profit_function1的公式,设置结果是当数量>5000时,执行profit_function2的公式。

以下代码如何更改才能达到目的?



import matplotlib.pyplot as plt
import numpy as np

# 参数设置
initial_margin = 2000 - 1300 - 100    # 增量利润 = 单价-原变动成本-增量成本
additional_cost = 5                   # 每递增100台订单增加的成本
initial_order = 5000                  # 初始订单量

# 定义profit函数
def profit_function1(order_quantity):
    return initial_margin * order_quantity
def profit_function2(order_quantity):
    return initial_margin * order_quantity - additional_cost * ((order_quantity - initial_order) / 100) * order_quantity

# 生成一系列订单量
order_quantities = np.arange(0, 20000, 1)


if order_quantities <= 5000:
    profit_function = profit_function1

else:
    profit_function = profit_function2   
   
# 计算对应订单量下的利润值
profits =
profits

FishC 发表于 2024-5-22 15:29:10

你可以使用np.where函数来根据订单数量选择使用哪个profit函数。下面是修改后的代码:

python
import matplotlib.pyplot as plt
import numpy as np

# 参数设置
initial_margin = 2000 - 1300 - 100    # 增量利润 = 单价-原变动成本-增量成本
additional_cost = 5                   # 每递增100台订单增加的成本
initial_order = 5000                  # 初始订单量

# 定义profit函数
def profit_function1(order_quantity):
    return initial_margin * order_quantity
def profit_function2(order_quantity):
    return initial_margin * order_quantity - additional_cost * ((order_quantity - initial_order) / 100) * order_quantity

# 生成一系列订单量
order_quantities = np.arange(0, 20000, 1)

# 根据订单数量选择使用哪个profit函数
profits = np.where(order_quantities >= initial_order, profit_function2(order_quantities), profit_function1(order_quantities))

# 绘制结果
plt.plot(order_quantities, profits)
plt.xlabel('Order Quantity')
plt.ylabel('Profit')
plt.title('Profit vs Order Quantity')
plt.show()

这样修改后,当订单数量大于等于初始订单量initial_order时,将使用profit_function2计算利润;否则,将使用profit_function1计算利润。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

75278350@qq.com 发表于 2024-5-22 16:24:22

大神指教!

如果需要目的是设置结果是当数量<5000时,执行profit_function1的公式,设置结果是当数量=5000时,执行profit_function2的公式,设置结果是当数量>5000时,执行profit_function3的公式


import matplotlib.pyplot as plt
import numpy as np

# 参数设置
initial_margin = 2000 - 1300 - 100    # 增量利润 = 单价-原变动成本-增量成本
additional_cost = 5                   # 每递增100台订单增加的成本
initial_order = 5000                  # 初始订单量

# 定义profit函数
def profit_function1(order_quantity):
    return (initial_margin+100) * order_quantity
def profit_function2(order_quantity):
    return initial_margin * order_quantity
def profit_function3(order_quantity):
    return initial_margin * order_quantity - additional_cost * ((order_quantity - initial_order) / 100) * order_quantity

# 生成一系列订单量
order_quantities = np.arange(0, 20000, 1)

# 根据订单数量选择使用哪个profit函数
profits =np.where(order_quantities > initial_order, profit_function2(order_quantities), profit_function1(order_quantities))

dic = {"新增订单量":order_quantities,
       "利润额":profits}
df = pd.DataFrame(dic)
df.to_excel('testname2.xlsx', index=False)

FishC 发表于 2024-5-22 16:26:03

75278350@qq.com 发表于 2024-05-22 16:24
大神指教!

如果需要目的是设置结果是当数量5000时 ...

你可以使用np.where函数来根据订单数量选择使用哪个profit函数。下面是修改后的代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 参数设置
initial_margin = 2000 - 1300 - 100    # 增量利润 = 单价-原变动成本-增量成本
additional_cost = 5                   # 每递增100台订单增加的成本
initial_order = 5000                  # 初始订单量

# 定义profit函数
def profit_function1(order_quantity):
    return (initial_margin+100) * order_quantity
def profit_function2(order_quantity):
    return initial_margin * order_quantity
def profit_function3(order_quantity):
    return initial_margin * order_quantity - additional_cost * ((order_quantity - initial_order) / 100) * order_quantity

# 生成一系列订单量
order_quantities = np.arange(0, 20000, 1)

# 根据订单数量选择使用哪个profit函数
profits = np.where(order_quantities == initial_order, profit_function3(order_quantities), np.where(order_quantities > initial_order, profit_function2(order_quantities), profit_function1(order_quantities)))

# 绘制结果
plt.plot(order_quantities, profits)
plt.xlabel('Order Quantity')
plt.ylabel('Profit')
plt.title('Profit vs Order Quantity')
plt.show()

# 将结果保存到Excel文件
dic = {"新增订单量":order_quantities,
       "利润额":profits}
df = pd.DataFrame(dic)
df.to_excel('testname2.xlsx', index=False)

这样修改后,当订单数量等于初始订单量initial_order时,将使用profit_function3计算利润;当订单数量大于初始订单量initial_order时,将使用profit_function2计算利润;否则,将使用profit_function1计算利润。同时,修改了代码最后一部分,将结果保存到名为'testname2.xlsx'的Excel文件中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: arange函数