2014-09-12 4 views
0

2.

Создание и печать новый bucketed массив с именем «ковши», таким образом, что все элементы сражен 10с. Затем напечатайте «ведра».

Исх. 39 становится 30, 42 становится 40.

У меня возникли проблемы с пониманием того, почему это не заполняет ndarray, не перебирает его и не устанавливает для каждого десятка группы, к которой она принадлежит, не многократно. Ошибки я получаю «IndexError: массивы, используемые в качестве индексов должно быть целым числом (или логическое значение) типа»Трудности с NumPy ndarray синтаксиса

print '2. ' 
    buckets = np.array(original) 
    for i in buckets: 
     for j in buckets: 
      if buckets[i][j] % 10 != 0: 
       buckets[i][j] = buckets[i][j] - buckets[i][j] % 10 

    print buckets 
    print '\n' 
+0

В качестве уточнения, линия, перебросила ошибку был: если ковши [я] [J] % 10! = 0: – Elininja

ответ

0

выражение for i in buckets итерацию через значение каждой строки из buckets не через индекс строки.

Вы можете получить форму массива, а затем перебрать диапазон индексов вместо:

for i in xrange(a.shape[0]):  # use 'range' in Python 3.x 
    for j in xrange(a.shape[1]): # use 'range' in Python 3.x 
     ... 
+0

Спасибо, это сработало! Я просто не знаком с тем, что делает форма [], вы могли бы немного разобраться? Никакой спешки. – Elininja

+0

возвращает форму массива (т. Е. Максимальный индекс каждого измерения в массиве). – isedev

Смежные вопросы