17

a[i][j]Python のリストのバックグラウンドと、C++/Java などのプログラミング言語のバックグラウンドから来て、アプローチを使用して要素を抽出する表記法に慣れています。しかし、NumPyでは、通常はそうしa[i,j]ます。これらはどちらも同じ結果を返します。

この 2 つの基本的な違いは何ですか。どちらを優先する必要がありますか?

4

1 に答える 1

19

主な違いは、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

このため、私は後者を好みます。

于 2013-05-12T07:15:11.060 に答える