来自Python的列表背景和C ++ / Java等编程语言的背景,一个用于使用Python提取元素的符号 a[i][j]
做法。但在 NumPy
一个人通常会这样做 a[i,j]
。这两个都会返回相同的结果。
这两者之间的根本区别是什么?应该首选哪些?
来自Python的列表背景和C ++ / Java等编程语言的背景,一个用于使用Python提取元素的符号 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
出于这个原因,我更喜欢后者。