鱼C论坛

 找回密码
 立即注册
查看: 76|回复: 3

[已解决]arange函数

[复制链接]
发表于 2024-5-22 15:26:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大神求助!目的是设置结果是当数量<=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 = [profit_function(order_quantity) for order_quantity in order_quantities]
profits
最佳答案
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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表