小编Poo*_*lka的帖子

为什么NumPy有时会比NumPy +纯Python循环慢?

这是基于2018-10年度提出的这个问题

考虑下面的代码。三种简单的函数可以计算NumPy 3D数组(1000×1000×1000)中的非零元素。

import numpy as np

def f_1(arr):
    return np.sum(arr > 0)

def f_2(arr):
    ans = 0
    for val in range(arr.shape[0]):
        ans += np.sum(arr[val, :, :] > 0)
    return ans

def f_3(arr):
    return np.count_nonzero(arr)

if __name__ == '__main__':

    data = np.random.randint(0, 10, (1_000, 1_000, 1_000))
    print(f_1(data))
    print(f_2(data))
    print(f_3(data))
Run Code Online (Sandbox Code Playgroud)

我的机器上的执行阶段(Python 3.7.?、Windows 10,NumPy 1.16。?):

%timeit f_1(data)
1.73 s ± 21.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit f_2(data)
1.4 s ± 1.36 …
Run Code Online (Sandbox Code Playgroud)

python performance numpy

11
推荐指数
2
解决办法
536
查看次数

标签 统计

numpy ×1

performance ×1

python ×1