17

来自 Python 和 C++/Java 等编程语言的列表背景,习惯于使用a[i][j]方法提取元素的表示法。但在NumPy,一个通常会a[i,j]。这两个都将返回相同的结果。

两者之间的根本区别是什么,应该首选哪个?

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 回答