我有一个方程式,我想对数组中称为“能量”的每个元素(e0)执行。但是,每次计算都需要在定义的范围内循环一组值(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。
干杯
答案 0 :(得分:0)
不应该出现空列表的情况。但是,如果你在评论中所说的是真的,那么neigthe应该是你所期望的。例如:
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