【发布时间】:2013-01-01 10:46:40
【问题描述】:
我的 numpy 数组切片代码(通过花哨的索引)非常慢。目前是程序的瓶颈。
a.shape
(3218, 6)
ts = time.time(); a[rows][:, cols]; te = time.time(); print('%.8f' % (te-ts));
0.00200009
什么是正确的 numpy 调用来获取由矩阵 a 的行“rows”和列“col”的子集组成的数组? (其实我需要这个结果的转置)
【问题讨论】:
-
time.time不是衡量时间的好方法。一般来说,最好使用timeit。 -
1.你的程序到底在做什么? 2.使用适当的python分析器。我发现切片不太可能是您的瓶颈
-
Oren - 如果您使用
@mgilson样式提及,它将向用户发送通知(每个评论一个)。 -
@mgilson:我记得在某些情况下(不过是 4 年前)遇到了问题,可能不再适用。手册说以下
For all cases of index arrays, what is returned is a copy of the original data, not a view as one gets for slicesdocs.scipy.org/doc/numpy/user/… -
@Wolph Numpy 1.15 仍然如此:高级索引总是返回数据的副本(与返回视图的基本切片相反)
标签: python numpy indexing slice