繁体   English   中英

从numpy import导入numpy作为np

[英]import numpy as np versus from 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时这会增加更多时间?

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

import numpy as np

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

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

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

如果您可以定义自己的别名(当然要遵守团队惯例),则可以兼得(更快的名称解析和不带阴影):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM