返回和空阵列
问题描述:
我有一个方程式,我想要为每个元素(e0)执行一个名为'energy'的数组。然而,每个计算都需要循环定义范围内的一组值(i)。当我尝试将一个循环放入另一个循环时,它将返回一个空数组,而我想要一个与能量数组大小相同的数组。返回和空阵列
fp1 = []
for e0 in energy:
for i in range(elow, ehigh, stepsize):
fp1 = np.append(fp1, np.cumsum((2/np.pi) * ((mu(element, e0) * i/((e0 * e0)-)(i * i)))) * 2)
所有这些都比较新,所以假设我完全忽略了一些东西。 为此使用Python 2.7。
干杯
答
那么空的列表不应该发生的情况。但是,如果你在评论中说的是真的,那么你应该期待什么。例如:
elow = 2
ehigh = 900
stepsize = 2
fp1 = []
energy = [1, 2, 3]
for e0 in energy:
for i in range(elow, ehigh, stepsize):
fp1 = numpy.append(fp1, 15)
fp1
array([ 15., 15., 15., ..., 15., 15., 15.])
len(fp1)
1347
正如你所看到的,你不会得到一个相同长度的能量阵列。这是因为range(2, 900, 2)
生成了从2 - > 898(449个元素)开始的列表。这是为能量中的每个元素生成的,并且计算结果将附加到fp1,因此您应该得到449 * 3 = 1347个元素作为结果。
我实在看不出,你会得到一个空列表其他结果比任何情况:
elow >= ehigh
energy = []
stepsize < 0
所以我的建议是在循环之前有权做所有这些值的打印/调试,也许试图更好地解释你想达到什么,因为就像我说的,即使这会起作用,你将不会得到与energy
相同长度的输出,而是length = len(energy) * 449
elow,ehigh , 一步的大小 ?如果elow> = eghigh,这只会生成一个[]列表。 – Bogdan 2012-02-09 15:34:53
elo = 0,ehi = 900,stepsize = 2 – user1171835 2012-02-09 15:38:46
你能证实你在这里使用Numpy吗?由于append为numpy数组返回一个数组,Python为Python列表返回None。 – 2012-02-09 15:56:48