Возврат и пустой массив - PullRequest
1 голос
/ 09 февраля 2012

У меня есть уравнение, которое я хочу выполнить для каждого элемента (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.

Приветствия

1 Ответ

0 голосов
/ 09 февраля 2012

Хорошо ситуация, в которой пустой список не должен возникать.Но следите за тем, что вы ожидаете, если то, что вы сказали в своем комментарии, верно.Например:

 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...