【发布时间】:2017-03-05 14:36:05
【问题描述】:
from numpy import *
from matplotlib.pyplot import *
c = 299792458 # m/s
lamda = 643.5 *10**-9 # m
def read_file(filename):
text_array = loadtxt(filename)
time = text_array[:, 0]
obs_lambda = text_array[:, 1]
flux = text_array[:, 2]
return [flux,time,obs_lambda]
def rad_vel(data):
v_r = zeros(len(data[2]))
for i in range(len(data[2])):
v_r = c*(((data[2][i] - lamda))/(lamda))
print v_r
plot(data[1],v_r)
show()
return v_r
test1 = read_file("test.txt")
print test1
当我调用该函数时,它是 v_r 和时间的维度差异。 len(time) 或 len(data[2]) 是一个具有 5087 个元素的 数组,但 v_r 是一个 标量。不能真正理解 v_r 是一个标量吗?
【问题讨论】:
-
你为什么要嵌套另一个函数?在任何情况下,
rad_vel都无法访问,因为它位于封闭函数的return语句之后。你到底在做什么? -
我还能如何调用 rad_vel() 中的 read_file(filename) 来传输时间和 obs_lambda?
-
我猜你想从
read_file返回rad_vel。这可行,但我不建议在这种情况下实际使用该模式。 -
你应该有完全独立的(不是嵌套的)函数
rad_vel和read_file。然后,您可以互相呼叫。 -
是的,我想绘制 (time,v_r)
标签: python function plot nested nested-function