从numpy import导入numpy为np

时间:2019-03-01 14:30:13

标签: python numpy import

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

from numpy import array, median, nan, percentile, roll, sqrt, sum, transpose, unique, where

通过使用

来保持名称空间整洁是更好的做法吗?
import numpy as np

然后当我需要使用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)))
  

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)))
  

1.65137

为什么使用np.sumsum会增加更多时间?

2 个答案:

答案 0 :(得分:3)

是的,最好保持名称空间整洁。所以我会用

import numpy as np

它使您的代码更具可读性,当您看到类似np.sum(array)的调用时,系统会提醒您应使用numpy数组。第二个原因是,许多numpy函数的名称与scipy等其他模块中的函数的名称相同。如果同时使用这两个函数,则始终清楚您使用的是哪个。

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

性能上的差异在于,在导入特定函数的情况下,您在脚本开头的numpy模块中引用了该函数。 对于常规模块导入,您只需导入对该模块的引用,而python需要在每次调用时解析/查找您在该模块中使用的功能。

答案 1 :(得分:1)

如果您可以定义自己的别名(当然要遵守团队惯例),那么您可以两全其美(更快的名称解析和不加阴影):

import numpy as np
(np_sum, np_min, np_arange) = (np.sum, np.min, np.arange)

x = np_arange(24)
print (np_sum(x))

定义别名的替代语法:

from numpy import \
    arange as np_arange, \
    sum as np_sum, \
    min as np_min