python - 我如何知道我是否正在调用 numpy.array() 还是使用内置数组函数?

标签 python python-3.x numpy

例如,如果我按如下方式导入:

from numpy import empty, full, zeros, matrix, arange, asarray, array

然后我可能会生成一些列表:

stuff = []

for i in range(N):
    stuff.append(things)

然后,我意识到我必须做一些数学!所以我输入:

math_stuff = array(stuff)

由于我不必输入 numpy.array 或 np.array,根据我声明导入的方式,我如何知道我的 IDE 更喜欢 numpy 版本而不是内置版本?这是自动的吗?

我检查了 numpy.array() 和 python 内置 array() 的文档,看起来它们都接受相同的“类似列表”参数。

最佳答案

正如评论者所说,只需查看最新的导入语句,您就可以轻松判断正在使用哪个。但是,如果您担心/困惑,您还可以使用 Python 方便的内置反射功能直接检查函数或类源自的模块。

例如以下Python语句:

print(array.__module__)
如果 array 是从 numpy 包导入的,

将打印字符串 'numpy.core.multiarray',或者打印字符串 'array' 如果它是从 array 包导入的。

如果x.__module__失败,请通过dir(x)探索替代方案

@ShadowRanger 提出了一些优点,即某些 Python 对象没有 __module__ 属性。特别是,如果您仅运行 import array,则 array 是一个模块,并且 print(array.__module__) 调用将会失败。在这种情况下,您始终可以通过 dir() 函数发现哪些反射信息实际上可用。

dir() 无疑是我最喜欢的 Python 功能。对于任何 Python 对象 xdir(x) 都会打印出 x 的完整属性列表。例如,假设您刚刚运行 import array,执行 dir(array) 将打印出:

['ArrayType',
'__doc__',
'__file__',
'__loader__',
'__name__',
'__package__',
'__spec__',
'_array_reconstructor',
'array',
'typecodes']

这表明,即使数组模块缺少 __module__,但也有其他可用的反射信息,例如 __name____file__

关于python - 我如何知道我是否正在调用 numpy.array() 还是使用内置数组函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49546472/

相关文章:

python - 将 DataFrame 格式化为面向行的 JSON 对象(电子表格样式数据透视表)

用于访问类变量的 Python 关键字

Python NumPy - FFT 和逆 FFT?

numpy - FFT 卷积如何以及为什么比直接卷积更快?

python - 正则表达式搜索多个后缀

python - Pandas – 创建缓冲列

python - 数据抓取器 : the contents of the div tag is empty (? ?)

python - 比较列表的元素

python - 将图像中的所有其他颜色更改为黑色,除了 Python OpenCV/Numpy 中指定的一种颜色

python - Pandas 列值替换