Отображение списка вне диапазона при использовании numpy - PullRequest
0 голосов
/ 23 октября 2019

Я использую numpy для создания 2D-массива, но получаю ошибку при попытке доступа с определенным индексом.

MaxIt=100
PopSize = 30
w=1
c1=2
c2=2

#Intialisation
empty_particle = {'position': None,
                  'velocity': None,
                  'cost': None,
                  'best_position': None,
                  'best_cost': None}
gbest = {'position': None, 'cost': np.inf}

# Create Initial Population
pop = [];
for i in range(0, PopSize):
    pop.append(empty_particle.copy())

    pop[i]['position'] = np.random.uniform(VarMin, VarMax, nVar)
    pop[i]['velocity'] = np.zeros(nVar)
    pop[i]['cost'] = CostFunction(pop[i]['position'])
    pop[i]['best_position'] = pop[i]['position'].copy()
    pop[i]['best_cost'] = pop[i]['cost']
    if pop[i]['best_cost'] < gbest['cost']:
            gbest['position'] = pop[i]['best_position'].copy()
            gbest['cost'] = pop[i]['best_cost']
    pop[2]['position']

Последняя строка показывает ошибку. Я просто хочу напечатать второй элемент в списке pop, т.е. pop[2]

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

В дополнение к ответу @ efkah:

В вашем вопросе указано, что вы хотите получить доступ к элементу second в списке pop. Однако, когда вы ссылаетесь на pop[2], , это третий элемент , так как итерации работают с нуля.

Это может быть причиной вашей ошибки 'index out of range'.

0 голосов
/ 23 октября 2019

Основной принцип python заключается в том, что вкладки работают как скобки в других языках. Вы пытаетесь распечатать элементы вашего массива, все еще создавая массив.

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