import numpy as np 与 from numpy import

ale*_*wis 2 python import numpy

我有一个大量使用的模块numpy

from numpy import array, median, nan, percentile, roll, sqrt, sum, transpose, unique, where
Run Code Online (Sandbox Code Playgroud)

通过使用来保持名称空间清洁是否是更好的做法

import numpy as np
Run Code Online (Sandbox Code Playgroud)

然后当我需要使用时array只需使用np.array, 例如?

这个模块也会被重复调用,比如说几百万次,并且保持命名空间干净似乎会增加一点开销?

setup = '''import numpy as np'''
function = 'x = np.sum(np.array([1,2,3,4,5,6,7,8,9,10]))'
print(min(timeit.Timer(function, setup=setup).repeat(10, 300000)))
Run Code Online (Sandbox Code Playgroud)

1.66832

setup = '''from numpy import arange, array, sum'''
function = 'x = sum(array([1,2,3,4,5,6,7,8,9,10]))'
print(min(timeit.Timer(function, setup=setup).repeat(10, 300000)))
Run Code Online (Sandbox Code Playgroud)

1.65137

为什么使用np.sumvs时会增加更多时间sum

小智 5

你是对的,最好保持命名空间干净。所以我会用

import numpy as np
Run Code Online (Sandbox Code Playgroud)

它使您的代码更具可读性,当您看到像 np.sum(array) 这样的调用时,系统会提醒您应该使用 numpy 数组。第二个原因是许多 numpy 函数与 scipy 等其他模块中的函数具有相同的名称...如果您同时使用这两个函数,那么您总是很清楚您正在使用哪一个。

正如您在所做的测试中所看到的,性能差异是存在的,如果您确实需要性能,则可以采用其他方式。

性能差异在于,在导入特定函数的情况下,您在脚本开头引用 numpy 模块中的函数。在一般模块导入的情况下,您仅导入对模块的引用,并且 python 需要在每次调用时解析/查找您在该模块中使用的函数。