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 你可以使用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 小助理,如未能正确解答您的问题,请继续追问。 大神指教!
如果需要目的是设置结果是当数量<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) 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]