a[i][j]
Python のリストのバックグラウンドと、C++/Java などのプログラミング言語のバックグラウンドから来て、アプローチを使用して要素を抽出する表記法に慣れています。しかし、NumPy
では、通常はそうしa[i,j]
ます。これらはどちらも同じ結果を返します。
この 2 つの基本的な違いは何ですか。どちらを優先する必要がありますか?
主な違いは、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
このため、私は後者を好みます。