Numpy: Разница между [i] [j] и a [i, j]

Исходя из фона списков в Python и языков программирования, таких как С++/Java, один используется для обозначения извлечения элементов с использованием подхода a[i][j]. Но в NumPy обычно a[i,j]. Оба они вернут тот же результат.

В чем основное отличие между ними и которое должно быть предпочтительным?

Ответ 1

Основное отличие состоит в том, что a[i][j] сначала создает представление на a[i], а затем индексирует его. С другой стороны, a[i,j] индексирует непосредственно в a, делая его быстрее:

In [9]: a = np.random.rand(1000,1000)

In [10]: %timeit a[123][456]
1000000 loops, best of 3: 586 ns per loop

In [11]: %timeit a[123,456]
1000000 loops, best of 3: 234 ns per loop

По этой причине я предпочел бы последний.