if-else条件python中的快捷方式

if-else条件python中的快捷方式,python,arrays,numpy,loops,if-statement,Python,Arrays,Numpy,Loops,If Statement,我的代码中有以下函数的缩写: s = 0.5 m = np.nonzero((velo>freq-fthrow - s*maskwidth_f)) velo_mask = np.delete(velo, m) spec_mask = np.delete(spec, m) if (average(velo_mask<0.9): s = 0.8 m = np.nonzero((velo>freq-fthrow - s*maskwidth_f)) velo_mask = np.

我的代码中有以下函数的缩写:

s = 0.5
m = np.nonzero((velo>freq-fthrow - s*maskwidth_f))
velo_mask = np.delete(velo, m)
spec_mask = np.delete(spec, m)
if (average(velo_mask<0.9):
 s = 0.8
 m = np.nonzero((velo>freq-fthrow - s*maskwidth_f))
 velo_mask = np.delete(velo, m)
 spec_mask = np.delete(spec, m)
else:
 s = 0.5
 m = np.nonzero((velo>freq-fthrow - s*maskwidth_f))
 velo_mask = np.delete(velo, m)
 spec_mask = np.delete(spec, m)
s=0.5
m=np.非零((速度>频率fthrow-s*maskwidth_f))
速度掩码=np.删除(速度,m)
等级库掩码=np.删除(等级库,m)
if(平均值(速度-fthrow-s*maskwidth-f))
速度掩码=np.删除(速度,m)
等级库掩码=np.删除(等级库,m)
其他:
s=0.5
m=np.非零((速度>频率fthrow-s*maskwidth_f))
速度掩码=np.删除(速度,m)
等级库掩码=np.删除(等级库,m)
这意味着我必须首先基于s的初始给定值计算两个数组,然后执行条件,在此基础上,我更改s的值,并希望基于s的新值重新运行之前的整个代码。(我有一个循环,每次整个数据都会改变)

这实际上是一个巨大的代码,我不想重复写3次,一次计算平均值,在if条件下,和在else条件下


是否有一种方法可以告诉python在if-else条件下重新运行前面的整个部分。

使用函数避免代码重复。例如:

def create_mask(velo, spec, freq, fthrow, maskwidth_f, s):
    m = np.nonzero((velo > freq - fthrow - s * maskwidth_f))
    velo_mask = np.delete(velo, m)
    spec_mask = np.delete(spec, m)
    return velo_mask, spec_mask

...

s = 0.5
velo_mask, spec_mask = create_mask(velo, spec, freq, fthrow, maskwidth_f, s)

s = 0.8 if average(velo_mask < 0.9) else 0.5
velo_mask, spec_mask = create_mask(velo, spec, freq, fthrow, maskwidth_f, s)
def创建掩码(速度、规格、频率、fthrow、掩码宽度、宽度):
m=np.非零((速度>频率-fthrow-s*maskwidth_f))
速度掩码=np.删除(速度,m)
等级库掩码=np.删除(等级库,m)
返回速度掩码、规格掩码
...
s=0.5
速度遮罩,规格遮罩=创建速度遮罩(速度,规格,频率,fthrow,maskwidth\u f,s)
s=0.8,如果平均值(速度掩码<0.9),否则为0.5
速度遮罩,规格遮罩=创建速度遮罩(速度,规格,频率,fthrow,maskwidth\u f,s)

您可以使用函数并返回所需的数据。在这种情况下,看起来您只使用了
velo_mask