gpt4 book ai didi

python - np.array 中行提取的时间

转载 作者:行者123 更新时间:2023-11-28 22:18:39 25 4
gpt4 key购买 nike

在优化 python 中的部分代码时,我观察到以下内容:

x = np.random.randn(100, 20)
a = np.arange(20)
%timeit x

23纳秒

%timeit x[a]

1.7 微秒

虽然 x[a] 是一个较小的数组,但它需要更多的时间才能到达。请问您知道是什么原因造成的吗?如果我要求 x.T.dot(x) 和 x[a].T.dot(x[a]) 而不是 x,则会观察到类似的结果。

最佳答案

虽然你的标题测试用例有缺陷,x 只是一个引用,但你的观察结果如果不那么极端

>>> timeit(lambda: x[a], number=1000000)
1.8212362979538739
>>> timeit(lambda: x.copy(), number=1000000)
1.2187692462466657

我们在这里看到的是高级索引的成本。 “传统”切片索引的成本要低得多,但仍有开销:

>>> np.all(x[:20] == x[a])
True
>>> timeit(lambda: x[:20].copy(), number=1000000)
0.7956113098189235

关于python - np.array 中行提取的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50337632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com