【发布时间】:2013-05-06 11:31:48
【问题描述】:
来自 Python 和 C++/Java 等编程语言的列表背景,习惯于使用 a[i][j] 方法提取元素的符号。但是在NumPy 中,通常是a[i,j]。这两个都将返回相同的结果。
两者的根本区别是什么,应该首选哪个?
【问题讨论】:
来自 Python 和 C++/Java 等编程语言的列表背景,习惯于使用 a[i][j] 方法提取元素的符号。但是在NumPy 中,通常是a[i,j]。这两个都将返回相同的结果。
两者的根本区别是什么,应该首选哪个?
【问题讨论】:
主要区别在于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
因此,我更喜欢后者。
【讨论】: