SciPy/NumPy 导入指南

2024-03-12

注意:我检查了重复项,但没有任何内容清楚地回答我的问题。我相信如果我错过了什么,你会让我知道的!

为了清理我的代码,我一直在寻找在我的程序中导入 SciPy 和 NumPy 的标准约定。我知道没有严格的指导方针,我可以按照我想要的方式去做,但时不时地,我仍然发现相互矛盾的指示。

例如,我在某处读到 NumPy 仅用于实现数组对象,而 SciPy 用于所有其他科学算法。所以 NumPy 应该用于数组操作,而 SciPy 应该用于其他一切...... 另一方面,SciPy 导入其主命名空间中的每个 Numpy 函数,这样scipy.array()是一样的numpy.array() (看到这个问题 https://stackoverflow.com/questions/6200910/relationship-between-scipy-and-numpy),所以 NumPy 应该只在不使用 SciPy 时使用,因为它们是重复的......

使用 SciPy 和 NumPy 的推荐方式是什么?作为一名科学家,sqrt(-1)应该返回一个复数,所以我倾向于只使用 SciPy。

现在,我的代码开始于:

import numpy as np
from scipy import *
from matplotlib import pyplot as plt

我使用 scipy 进行数学运算(例如log10())和 numpy 用于数组创建/操作(例如np.zeros())。一直使用 SciPy 并且从不显式导入 NumPy 可以吗?未来的更新会从 SciPy 中删除 NumPy 的数组操作吗?


我建议做类似的事情

import numpy as np
import scipy as sp

反而。这样做总是危险的from ... import *特别是对于大型模块,例如numpy and scipy。下图说明了原因:

>>> any(['foo'])
True
>>> from scipy import *
>>> any(['foo'])

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
     any(['foo'])
  File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 1575, in any
    return _wrapit(a, 'any', axis, out)
  File "C:\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 37, in _wrapit
    result = getattr(asarray(obj),method)(*args, **kwds)
TypeError: cannot perform reduce with flexible type

这里会发生什么?标准Python内置函数any被替换为scipy.any它有不同的行为。这可能会破坏任何使用该标准的代码any.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SciPy/NumPy 导入指南 的相关文章

随机推荐