我有一个接受 7 个输入的函数,每个输入都可以是标量(浮点)、列表或 numpy 数组。为了后续的计算,我想将它们全部转换为numpy数组。
import numpy as np
def my_function(period,mw,rjb,soft_site=0,stiff_site=0,fault_normal=0,fault_reverse=0):
period = np.array(period)
mw = np.array(mw)
rjb = np.array(rjb)
soft_site = np.array(soft_site)
stiff_site = np.array(stiff_site)
fault_normal = np.array(fault_normal)
fault_reverse = np.array(fault_reverse)
我就是这么做的。有没有办法循环遍历参数而不是重复调用 np.array() 方法,因为这也会使其与可变数量的参数兼容。
使用 kwargs 选项并循环遍历关键字,从而生成包含数组的字典。
def my_function2(period, mw, rjb, **kwargs):
period = np.array(period)
mw = np.array(mw)
rjb = np.array(rjb)
for k in kwargs:
kwargs[k] = np.array(kwargs[k])
return kwargs
x = my_function2(2,[1,2,3],'1234', soft_site=0,stiff_site=0,fault_normal=0,fault_reverse=0)
print(x)
结果:
{'soft_site': array(0), 'stiff_site': array(0), 'fault_normal': array(0), 'fault_reverse': array(0)}