在script_1.py我目前正在编写的文档中,我已经阅读了一个带有数据的文本文件,并且我将这些数据分成了单独的列,并将它们变成了numpy数组。现在,我想通过我制作的计算器运行其中的一列(script_2.py)。在计算器中有必须定义的变量(主要i和j)。
所以,这是我需要帮助的地方。我想取一个我的numpy数据数组并替换它的第一个值作为计算器的i值,然后运行计算器,返回一个结果,然后用数组的第二个值重复该过程,然后使用第三个值等等... all从我目前script_1.py。
我已经得到了script_1.py对计算器呼吁,并通过导入它运行它,我对如何重新定义变量只是有点失去了i在script_2.py从script_1.py,运行它,然后循环这一进程。
来自script_1:
import numpy as np
import matplotlib.pyplot as plt
import script_2 as calc
# Read data from txt file
data = np.loadtxt('fort.txt')
# Identify and label each column's data
nvalue_pt1 = data[:496, 0]
# Make each column an array for manipulation
nvalue_pt1 = np.array(nvalue_pt1)
# Run calculator with new values from above **WHERE I NEED HELP**
calc.i = nvalue_pt1[0]
calc.sigma(calc.Aij, calc.j, calc.i - 1)
从 script_2
# ***Input i value:
i = 5
# ***Input j value:
j = 3
# ***Input z value:
z = 2
# Calculate g value:
g = 2 * i**2
def Aij(j):
return (1.57456 * 10**10) * (1.0 / g) * (z**4.0) * (1.0 / ((i)**3.0
* (j)**3.0)) * (1.0 / (abs((1.0 / (j)**2.0) - (1.0 / (i)**2.0))) *
(1.0))
# Define Sigma (Sum) Function
def sigma(func, frm, to):
result = 0
for n in range(frm, to + 1):
result += func(n)
return result
# Print Result
if __name__ == '__main__':
print("Sum from j = 1 to i-1 : " + str(sigma(Aij, 1, i - 1)))
发布于 2018-06-12 17:07:58
script_2.py
def Aij(j, i, z):
g = 2 * i ** 2
return (1.57456 * 10 ** 10) * (1.0 / g) * (z ** 4.0) * (1.0 / ((i) ** 3.0 * (j) ** 3.0))\
* (1.0 / (abs((1.0 / (j) ** 2.0) - (1.0 / (i) ** 2.0))) *(1.0))
def sigma(func, **kwargs):
# i think it's more pythonic
frm = kwargs.get('j')
to = kwargs.get('i')
# pop j, because if we parse kwargs with j and j as positional arg it would be an error
kwargs.pop('j')
return sum([func(n, **kwargs) for n in range(frm, to + 1)])
# Print Result
if __name__ == '__main__':
print("Sum from j = 1 to i-1 : " + str(sigma(Aij, j=3, i=7, z=2)))
script_1.py
import numpy as np
import matplotlib.pyplot as plt
import script_2 as calc
data = np.loadtxt('fort.txt')
nvalue_pt1 = data[:496, 0]
nvalue_pt1 = np.array(nvalue_pt1)
i = nvalue_pt1[0]
calc.sigma(calc.Aij, j=3, i=5, z=2)
现在你可以改变参数。但是,你可以仅将args解析为命名参数。
https://stackoverflow.com/questions/-100004857
复制相似问题