相关疑难解决方法(0)

SciPy与NumPy的关系

SciPy似乎在其自己的命名空间中提供了大多数(但不是全部[1])的NumPy函数.换句话说,如果有一个名为的函数numpy.foo,几乎可以肯定的是scipy.foo.大多数情况下,两者看起来完全相同,通常甚至指向同一个函数对象.

有时,他们是不同的.举一个最近出现的例子:

  • numpy.log10是一个返回NaNs为负参数的ufunc ;
  • scipy.log10 返回负参数的复数值,并且看起来不是ufunc.

同样可以说,大约log,log2logn,但不是关于log1p[2].

另一方面,numpy.exp并且scipy.exp对于相同的ufunc看起来是不同的名称.这也是真正的scipy.log1pnumpy.log1p.

另一个例子是numpy.linalg.solveVS scipy.linalg.solve.它们相似,但后者提供了一些额外的功能.

为什么明显重复?如果这是numpyscipy命名空间的批量导入,为什么行为和缺失函数的微妙差异?是否有一些总体逻辑可以帮助消除混乱?

[1] ,,numpy.min 和其他几个人都在没有同行的命名空间.numpy.maxnumpy.absscipy

[2]使用NumPy 1.5.1和SciPy 0.9.0rc2进行测试.

python numpy scipy

243
推荐指数
6
解决办法
4万
查看次数

一些Numpy函数返回ndarray而不是我的子类

我是Numpy的ndarray类的子类,添加了一些元数据和其他方法.我试图按照指示这篇文章那一个.但是,一些Numpy(或Scipy)函数返回基类"ndarray"而不是我的自定义子类.其他Numpy函数返回我的子类,我不知道差异的原因是什么.如何让所有numpy/scipy函数返回我的子类?这就是我做的:

class Signal(np.ndarray):
    def __new__(cls, filename):
        #print "In __new__" #TEMP DEBUG
        ret = np.fromfile(filename, dtype = np.int32)
        ret = ret.view(cls) # convert to my class, i.e. Signal
        ret.parse_filename(filename)
        return ret

    def __array_finalize__(self, obj):
        #print "in __array_finalize__" #TEMP DEBUG
        if obj is None: return # shouldn't actually happen.
        # copy meta-fields from source, if it has them (otherwise put None's)
        self.filename = getattr(obj, "filename", None)
        self.folder = getattr(obj, "folder", None)
        self.label = getattr(obj, "label", None)
        self.date = …
Run Code Online (Sandbox Code Playgroud)

python numpy subclass

11
推荐指数
1
解决办法
1086
查看次数

NumPy:为什么需要明确复制一个值?

arr = np.arange(0,11)
slice_of_arr = arr[0:6]
slice_of_arr[:]=99

# slice_of_arr returns
array([99, 99, 99, 99, 99, 99])
# arr returns
array([99, 99, 99, 99, 99, 99,  6,  7,  8,  9, 10])
Run Code Online (Sandbox Code Playgroud)

如上所示,您不能直接更改值slice_of_arr,因为它是一个视图arr,而不是一个新变量.

我的问题是:

  1. NumPy为什么这样设计?每次你需要.copy然后分配价值不是很乏味吗?
  2. 有什么我可以做的,摆脱.copy?如何更改NumPy的默认行为?

python numpy

7
推荐指数
1
解决办法
323
查看次数

标签 统计

numpy ×3

python ×3

scipy ×1

subclass ×1