gpt4 book ai didi

python - 在执行计算时更新 for 循环中的变量名称

转载 作者:太空宇宙 更新时间:2023-11-04 07:51:06 24 4
gpt4 key购买 nike

每当我在 Python 中偶然发现某种计算时,我倾向于采用非 Pythonic 方法,因为我对这门语言不太熟悉:

import pandas as pd
import numpy as np

v = 8
gf = 2.5

data_a1 = np.random.randint(5, 10, 21)
data_a2 = np.random.randint(5, 10, 21)
data_a3 = np.random.randint(5, 10, 21)
data_a4 = np.random.randint(5, 10, 21)
data_a5 = np.random.randint(5, 10, 21)

data_b1 = np.random.randint(6, 11, 21)
data_b2 = np.random.randint(6, 11, 21)
data_b3 = np.random.randint(6, 11, 21)
data_b4 = np.random.randint(6, 11, 21)
data_b5 = np.random.randint(6, 11, 21)

e_1 = 2 * (data_a1 + data_b1) / 2 / v / gf
e_2 = 2 * (data_a2 + data_b2) / 2 / v / gf
e_3 = 2 * (data_a3 + data_b3) / 2 / v / gf
e_4 = 2 * (data_a4 + data_b4) / 2 / v / gf
e_5 = 2 * (data_a5 + data_b5) / 2 / v / gf

正如您从上面的示例中看到的那样,我明确地写下了五次,而不是使用 Python 我可以想象它的用途——我想通过更新来计算 e它在每次迭代中使用 for 循环,我也更喜欢使用 numpy

由于我所有的努力都没有结果,所以我转向了 pandas,因为我相当有信心无论出于何种原因我都能救赎自己:

df_a     = pd.DataFrame({'data_a1': data_a1, 'data_a2': data_a2, 'data_a3': data_a3, 'data_a4': data_a4, 'data_a5': data_a5})
df_b = pd.DataFrame({'data_b1': data_b1, 'data_b2': data_b2, 'data_b3': data_b3, 'data_b4': data_b4, 'data_b5': data_b5})

c = 0
dfs = []
for i,j in zip(df_a, df_b):
e = 2 * (i + j) / 2 / v / gf
e = e.add_suffix('_' + str(c))
dfs.addpend(e)
c += 1

唉,我的愚蠢占了上风,我做不到。

  • 是否有一种简化的方法来使用 numpy 处理方程式,以便变量在被认为是 pythonic 的 for 循环中更新自身?
  • 执行这些任务时,建议坚持使用 numpy 还是转向 pandas

最佳答案

首先让我们远离创建大量变量名。在 Python 中,列表可以包含其他对象,包括数组。

datalist1 = []
for _ in range(5):
datalist1.append(np.random.randin(5, 10, 21))
# same for datalist2
datalist2 = [np.random.randint(6, 11, 21),
np.random.randint(6, 11, 21),
...]

elist = [2*(a+b)/2/v/gf for a,b in zip(datalist1, datalist2)]

使用形状为 (5,21) 的二维数组更好。但是我演示的那种列表迭代适用于所有 Python,而不仅仅是 numpy

您甚至可以根据预先存在的变量创建一个列表:

alist = [data_b1, data_b2, ...]

关于python - 在执行计算时更新 for 循环中的变量名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54656328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com