运行 python 循环中不同参数的相同函数
Running same function for different arguments in a loop in python
我有大量相同大小的 3D 数据阵列,例如密度、温度、压力、熵等。我想 运行 为每个数组使用相同的函数(如 divergence())。简单的方法如下:
div_density = divergence(density)
div_temperature = divergence(temperature)
div_pressure = divergence(pressure)
div_entropy = divergence(entropy)
考虑到我有几个数组(大约 100 个),我想使用如下循环:
var_list = ['density', 'temperature', 'pressure', 'entropy']
div = np.zeros((len(var_list)))
for counter, variable in enumerate(var_list):
div[Counter] = divergence(STV(variable))
我正在寻找像 STV() 这样的函数,它只是将“字符串”更改为“变量名”。 python中有类似的功能吗?如果是,那个函数是什么(通过使用这样的函数,数据不应该从变量中删除)?
这些 3D 数组很大,由于 RAM 的限制,无法保存在另一个列表中,例如:
main_data=[density, temperature, pressure, entropy]
所以我不能在 main_data 上循环。
用字典怎么样?将变量内容链接到名称。
不要使用变量名 density = ...
,而是使用字典条目 data['density']
作为数据:
data = {}
# load ur variables like:
data['density'] = ...
divs = {}
for key, val in data.items():
divs[key] = divergence(val)
由于您使用的数据很大,并且您尝试执行的操作计算量大,我会看看一些提供处理此类数据结构的方法的库。其中一些还使用 c/c++ 绑定来进行昂贵的计算(例如 numpy)。仅举几例:numpy、pandas、xarray、iris(尤其是地球数据)
一种解决方法是使用 exec
,如下所示
var_list = ['density', 'temperature', 'pressure', 'entropy']
div = np.zeros((len(var_list)))
for counter, variable in enumerate(var_list):
s = "div[counter] = divergence("+variable+")"
exec(s)
exec
基本上执行在 python 解释器中作为参数给出的字符串。
我有大量相同大小的 3D 数据阵列,例如密度、温度、压力、熵等。我想 运行 为每个数组使用相同的函数(如 divergence())。简单的方法如下:
div_density = divergence(density)
div_temperature = divergence(temperature)
div_pressure = divergence(pressure)
div_entropy = divergence(entropy)
考虑到我有几个数组(大约 100 个),我想使用如下循环:
var_list = ['density', 'temperature', 'pressure', 'entropy']
div = np.zeros((len(var_list)))
for counter, variable in enumerate(var_list):
div[Counter] = divergence(STV(variable))
我正在寻找像 STV() 这样的函数,它只是将“字符串”更改为“变量名”。 python中有类似的功能吗?如果是,那个函数是什么(通过使用这样的函数,数据不应该从变量中删除)? 这些 3D 数组很大,由于 RAM 的限制,无法保存在另一个列表中,例如:
main_data=[density, temperature, pressure, entropy]
所以我不能在 main_data 上循环。
用字典怎么样?将变量内容链接到名称。
不要使用变量名 density = ...
,而是使用字典条目 data['density']
作为数据:
data = {}
# load ur variables like:
data['density'] = ...
divs = {}
for key, val in data.items():
divs[key] = divergence(val)
由于您使用的数据很大,并且您尝试执行的操作计算量大,我会看看一些提供处理此类数据结构的方法的库。其中一些还使用 c/c++ 绑定来进行昂贵的计算(例如 numpy)。仅举几例:numpy、pandas、xarray、iris(尤其是地球数据)
一种解决方法是使用 exec
,如下所示
var_list = ['density', 'temperature', 'pressure', 'entropy']
div = np.zeros((len(var_list)))
for counter, variable in enumerate(var_list):
s = "div[counter] = divergence("+variable+")"
exec(s)
exec
基本上执行在 python 解释器中作为参数给出的字符串。