2015-01-24 3 views
0

В коде, который я писал, я продолжаю получать индексную ошибку «index out of bounds», однако я не вижу разумного способа, чтобы он дал мне ошибку.index out of bounds error: Python

Вот где я получаю эту ошибку:

def data_point(box_size): 
    np.random.seed(250) 
    x_data = np.random.uniform(-1, 1, 40)*box_size*0.5 
    y_data = np.random.uniform(-1, 1, 40)*box_size*0.5 
    for i in x_data: 
     print "(", x_data[i], ",", y_data[i], ")" 
    return x_data, y_data 

Это является частью кода, который я использую. Всякий раз, когда я запускаю это, я получаю ошибку от пятой строки здесь. Если я просто просто поставлю диапазон (40), ошибка исчезнет. Есть идеи?

ответ

3

i не является индексом. i - данные сами. Если вы хотите, чтобы соединить массивы, просто используйте zip():

for x, y in zip(x_data, y_data): 
    print "(", x, ",", y, ")" 

Для случаев, когда вам нужно индекс, вы можете использовать enumerate() function к добавить индекс:

for i, x in enumerate(x_data): 
    print "(", x, ",", y_data[i], ")" 

или вы можете использовать range() с len(), чтобы произвести определенное количество индексов:

for i in range(len(x_data)): 
+0

Ну, это было совершенно очевидно, что я однако, мне удалось использовать его таким образом: 'dx = x_data.copy() dx [:] = [i - X for i in dx]' Однако это работает нормально. Я думаю, они не одно и то же. –

+0

Не лучше ли «xrange»? – Kasisnu

+1

'xrange()' действительно хорошая идея для Python 2 и особенно если количество элементов велико. Однако в большинстве случаев вам не нужен диапазон. Я использовал 'range()' для повторения исходного кода. –