小编Dan*_*lke的帖子

如何在Cython中使用Sphinx?

我最近通过重命名所有模块(除了顶级Cythonized我的一个项目__init__.py)来*.pyx,并通过把ext_modules = [Extension('foo', ['foo.pyx'])]setup.py.建筑和安装工作正常.但是,当我这样做时cd doc; make html,Sphinx失败了,因为它无法导入任何现在的模块*.pyx.

如果我编辑doc/conf.py并更改sys.path.insert(0, os.path.abspath('..'))sys.path.insert(0, os.path.abspath('../build/temp.linux-x86_64-2.7')),那么Sphinx可以找到所有模块并可以生成文档,但在这种情况下我会收到类似的错误error while formatting arguments for foo.bar: <built-in function bar> is not a Python function.大概这是因为现在Sphinx只能访问*.so文件,而不是源文件.同样的sys.path修改还允许通过Sphinx(make doctest)运行doctests .

我尝试其他溶液使用扩展*.py,而不是*.pyx(和使用ext_modules = [Extension('foo', ['foo.py'])]setup.py).在这种情况下,文档正确构建,但我认为doctests现在绕过Cython.

我无法在网上找到有关一起使用Sphinx和Cython的任何信息.我查看了一些使用两者的项目的源代码,但它们似乎没有在*.pyx文件中使用docstrings .我知道Sage确实如此,但是这个项目太复杂了我不能分开.

Sphinx是否支持Cython文件中的文档字符串?如果是这样,我该如何工作呢?

cython python-sphinx

18
推荐指数
2
解决办法
3816
查看次数

针对欠约束系统的SciPy优化

我经常要解决非线性问题,其中变量的数量超过了约束的数量(或者有时反过来).通常,一些约束或变量以复杂的方式冗余.有什么方法可以解决这些问题吗?

大多数scipy求解器似乎假设约束的数量等于变量的数量,并且Jacobian是非奇异的. leastsq有时可以工作但是当约束少于变量数时它甚至都没有尝试.我意识到,我可以只运行fminlinalg.norm(F),但这是效率远远低于它利用雅可比的任何方法.

这是一个问题的例子,它说明了我在说什么.它显然有一个解决方案,但leastsq给出了一个错误.当然,这个例子很容易手工解决,我只是把它放在这里来证明这个问题.

import numpy as np
import scipy.optimize

mat = np.random.randn(5, 7)

def F(x):
    y = np.dot(mat, x)
    return np.array([ y[0]**2 + y[1]**3 + 12, y[2] + 17 ])

x0 = np.random.randn(7)
scipy.optimize.leastsq(F, x0)
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

Traceback (most recent call last):
  File "question.py", line 13, in <module>
    scipy.optimize.leastsq(F, x0)
  File "/home/dstahlke/apps/scipy/lib64/python2.7/site-packages/scipy/optimize/minpack.py", line 278, in leastsq
    raise TypeError('Improper input: N=%s must not exceed M=%s' % (n,m))
TypeError: Improper input: N=7 must not exceed …
Run Code Online (Sandbox Code Playgroud)

python scipy nonlinear-optimization

5
推荐指数
1
解决办法
6230
查看次数