如何确定值列表的大小并对不同区域使用不同的方程式?

2024-06-28 15:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

rho_list = np.arange(10000, dtype = 'float64') * 0.0002 * rhoe

F_rho_list = []

for rhoi in rho_list:

    if 0.0 <= rhoi < rhol:
        F_rho_list += [Fm0 + Fm1*(rhoi/rhol -1) + Fm2*np.power(rhoi/rhol -1, 2) + Fm3*np.power(rhoi/rhol -1, 3)]

    elif rhol <= rhoi < rhon:
        F_rho_list += [Fn0 + Fn1*(rhoi/rhon -1) + Fn2*np.power(rhoi/rhon -1, 2) + Fn3*np.power(rhoi/rhon -1, 3)]

    elif rhon <= rhoi <rho0:
        F_rho_list += [F0 + F1*(rhoi/rhoe -1) + F2*np.power(rhoi/rhoe -1, 2) + F3*np.power(rhoi/rhoe -1, 3)]

    elif rhoi >= rho0:
        F_rho_list += [Fe*(1- etha*np.log(rhoi/rhoe))*np.power(rhoi/rhoe, etha)]

rho_list是从0到2*rhoe的列表

对于不同的值或不同的区域,我想用不同的方程来计算FƏrho值,并将其放入FƏrhoƏu列表中

我知道我可以用

F_rho_list[(rho_list>=0) & (rho_list<rhol)]

选择数字。然而,我不知道如何把这些数字插入不同的方程式中

有人能更容易地解决这些问题吗?提前谢谢


Tags: 代码列表np数字listpowerelifrho
1条回答
网友
1楼 · 发布于 2024-06-28 15:04:32

这里有一个更具结构性的例子。但我认为你这样做已经足够解决问题了

def func1(x, left, right):
    return x + 2

def func2(x, left, right):
    return 2 * x

def func3(x, left, right):
    return x - 3

funcs = [func1, func2, func3]
segments = [0, 1, 5, 10]

rho_list = np.linspace(0, 10, 10000)
F_rho_list = np.zeros_like(rho_list)
for left, right, func in zip(segments[:-1], segments[1:], funcs):
    rng = (rho_list >= left) & (rho_list < right)
    F_rho_list[rng] = func(rho_list[rng], left, right)

相关问题 更多 >