слишком много индексов для массива для простой матрицы

1

Когда я пытаюсь напечатать каждую запись в ndarray, я использую это:

    A = np.array([[(1,2,3)],
             [1,2,3],
             [1,2,3]])

     dim = len(A)
     for i in range(dim):
         for j in range(dim):
             print(A[i,j])

однако это показывает, что: слишком много индексов для массива, где я ошибаюсь?

  • 0
    Созданный вами массив бессмысленен, поскольку первый список содержит один элемент: кортеж. В результате numpy создает 1d массив object s.
  • 0
    @WillemVanOnsem Хорошо, я вижу, как правильно это сделать ..
Теги:
numpy

1 ответ

1
Лучший ответ

Проблема заключается в кортеже в вашем массиве numpy:

A = np.array([[(1,2,3)],
              [1,2,3],
              [1,2,3]])

Это означает, что первый подсписчик содержит один элемент: 3-кортеж. Поскольку в этих списках не содержится иного количества элементов, numpy будет конструировать 1D массив объектов:

>>> A
array([list([(1, 2, 3)]), list([1, 2, 3]), list([1, 2, 3])], dtype=object)

поэтому массив - это просто 1D массив ссылок на object s, эти объекты могут быть списками, но это может быть что угодно. Таким образом, есть только одно измерение, которое может быть проиндексировано.

Если мы опустим круглые скобки, у нас есть список из трех элементов, например:

>>> A = np.array([[1,2,3],
...               [1,2,3],
...               [1,2,3]])
>>> A
array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]])

а затем запрос с двумя индексами не является проблемой вообще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню