【发布时间】:2017-02-06 09:40:09
【问题描述】:
如标题所示,索引 list l 和 (n,) 布尔值 ndarray ar 和 len(l) == ar.shape[0] 的最有效方法是什么?
【问题讨论】:
-
除非
ar非常稀疏,否则我怀疑你能比先转换为数组更快np.array(l)[ar] -
你可以自己计时。看看timeit。答案可能会因列表的大小而异。
如标题所示,索引 list l 和 (n,) 布尔值 ndarray ar 和 len(l) == ar.shape[0] 的最有效方法是什么?
【问题讨论】:
ar 非常稀疏,否则我怀疑你能比先转换为数组更快np.array(l)[ar]
好的,让我们列出您可以尝试的习语。给它们计时,你必须自己做,因为这取决于ar 的大小和稀疏性,参见。 @Imanol Luengo 的评论
np.array(l)[ar] # output is an array
[e for e,m in zip(l, ar) if m]
[l[i] for i in np.where(ar)[0]]
【讨论】: