2013-05-12 20 views
10

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

В чем принципиальная разница между этими двумя и которые должны быть предпочтительными?

ответ

11

Главное отличие состоит в том, что 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 

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

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