SciPy似乎在其自己的名称空间中提供了NumPy的大多数(但不是全部[1])功能。换句话说,如果有一个名为的函数numpy.foo
,几乎可以肯定有一个scipy.foo
。在大多数情况下,两者看起来是完全相同的,甚至有时指向相同的功能对象。
有时,它们是不同的。举一个最近出现的例子:
numpy.log10
是一个ufunc该返回的NaN为负参数;scipy.log10
返回负参数的复杂值,并且似乎不是ufunc。同样可以说,大约log
,log2
和logn
,但不是关于log1p
[2]。
另一方面,对于相同的ufunc
numpy.exp
,它们scipy.exp
似乎是不同的名称。scipy.log1p
和的情况也是如此numpy.log1p
。
另一个例子是numpy.linalg.solve
VS scipy.linalg.solve
。它们相似,但是后者比前者提供了一些附加功能。
为什么出现明显的重复?如果这意味着要的批发进口numpy
到scipy
命名空间,为什么在行为的细微差别和缺少的功能?是否有一些有助于消除混乱的总体逻辑?
[1] ,,和其他几个人都在没有同行的命名空间。numpy.min``numpy.max``numpy.abs``scipy
[2]使用NumPy 1.5.1和SciPy 0.9.0rc2进行了测试。
上次我检查它时,scipy__init__
方法执行
from numpy import *
以便在导入scipy模块时将整个numpy命名空间包含到scipy中。
log10
您描述的行为很有趣,因为 两个 版本都来自numpy。一个是a
ufunc
,另一个是numpy.lib
功能。为什么scipy偏爱库函数而不是ufunc
,我不知道该怎么办。
编辑:事实上,我可以回答这个log10
问题。在scipy__init__
方法中,我看到以下内容:
# Import numpy symbols to scipy name space
import numpy as _num
from numpy import oldnumeric
from numpy import *
from numpy.random import rand, randn
from numpy.fft import fft, ifft
from numpy.lib.scimath import *
log10
您获得scipy的功能来自numpy.lib.scimath
。查看该代码,它说:
"""
Wrapper functions to more user-friendly calling of certain math functions
whose output data-type is different than the input data-type in certain
domains of the input.
For example, for functions like log() with branch cuts, the versions in this
module provide the mathematically valid answers in the complex plane:
>>> import math
>>> from numpy.lib import scimath
>>> scimath.log(-math.exp(1)) == (1+1j*math.pi)
True
Similarly, sqrt(), other base logarithms, power() and trig functions are
correctly handled. See their respective docstrings for specific examples.
"""
看来模块覆盖了基础numpy的ufuncs
sqrt
,log
,log2
,logn
,log10
,power
,arccos
,arcsin
,和arctanh
。这就解释了您所看到的行为。这样做的根本设计原因可能埋在某个地方的邮件列表中。
Numpy、scipy、matplotlib和pylab是使用python进行科学计算的人常用的术语。 我刚刚了解了一点派拉布,我感到困惑。每当我想导入numpy时,我都可以: 我只是想,一旦我做到了 numpy也将被导入(使用alias)。所以基本上第二个比第一个做得更多。 有几件事我想问: pylab只是numpy、scipy和matplotlib的包装器,对吗 由于np是pylab中的num
我怎样才能导入阶乘函数分别从Numpy和sippy为了看看哪一个更快? 我已经通过导入数学从python本身导入了阶乘。但是,它不适用于Numpy和smpy。
我试图在我正在分发的包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我使用 它安装了SciPy 0.9。0和NumPy 1.5。1,而且效果很好。 我想使用-执行同样的操作,以便能够在设置中指定依赖项。我自己的包裹。 问题是,当我尝试时: 它很好用。 但是 惨败 我如何让它工作?
问题内容: 我正在尝试在要分发的程序包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我同时使用 它安装了SciPy 0.9.0和NumPy 1.5.1,并且运行良好。 我想使用-做同样的事情,以便能够在我自己的包的setup.py中指定依赖项。 问题是,当我尝试: 它工作正常。 但是之后 惨败 我该如何工作? 问题答案: 我假设我的回答是Linux经验。我发现要顺利进行有三个先决条
译者:cangyunye 作者: Adam Paszke 修订者: Adam Dziedzic 在这个教程里,我们要完成两个任务: 创建一个无参神经网络层。 这里需要调用numpy作为实现的一部分。 创建一个权重自主优化的伸进网络层。 这里需要调用Scipy作为实现的一部分。 import torch from torch.autograd import Function 无参数示例 这一层并
问题内容: 内置和之间有什么区别? 例 输出: 我发现这里说的是: float32单精度浮点数:符号位,8位指数,23位尾数 找不到内置格式。 问题答案: Python的标准类型是C :http : //docs.python.org/2/library/stdtypes.html#typesnumeric NumPy的标准相同,并且也相同。