【问题标题】:Displaying 'list out of range' when using numpy使用 numpy 时显示“列表超出范围”
【发布时间】:2019-10-24 06:36:24
【问题描述】:

我正在使用numpy 生成一个二维数组,但在尝试使用特定索引访问时出错。

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]

【问题讨论】:

标签: python list numpy


【解决方案1】:

python 的一个基本原则是制表符在其他语言中的工作方式类似于括号。您正在尝试在构建数组的同时打印数组的元素。

【讨论】:

    【解决方案2】:

    除了@efkah 的回答:

    您的问题表明您要访问pop 列表中的第二个 项。但是,当您引用 pop[2] 时,这是第三项,因为可迭代对象从零开始工作。

    这可能是您的“索引超出范围”错误的触发因素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 2017-03-23
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多