返回空数组
我有一个公式,想要对一个叫做'energy'的数组里的每个元素(e0)进行计算。不过,每次计算都需要在一个定义好的范围内循环遍历一组值(i)。当我尝试把一个循环放在另一个循环里面时,结果却返回了一个空数组,而我希望得到一个和energy数组大小一样的数组。
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来做的。
谢谢!
1 个回答
0
其实,空列表的情况是不应该出现的。不过,如果你在评论中说的是真的,那你应该能得到你期待的结果。举个例子:
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
你可以看到,生成的数组长度和能量(energy)的长度是不一样的。这是因为 range(2, 900, 2)
生成了一个从2到898的列表(总共有449个元素)。这个列表是针对能量中的每一个元素生成的,计算的结果会被添加到fp1中,所以你应该得到的结果是449 * 3 = 1347个元素。
我实在想不出有什么情况会导致你得到一个空列表,除了:
elow >= ehigh
energy = []
stepsize < 0
所以我的建议是在循环之前打印/调试一下所有这些值,可能还要更清楚地解释一下你想要实现的目标。因为就像我说的,即使这个能正常工作,你得到的输出长度也不会和 energy
一样,而是 length = len(energy) * 449
。