小编BJH*_*BJH的帖子

inpolygon for Python - matplotlib.path.Path contains_points()方法的示例?

我一直在寻找一个替代MATLAB的inpolygon()的python,我遇到了contains_points作为一个很好的选择.

但是,文档有点陈述,没有指示contains_points期望的数据类型:

contains_points(points,transform = None,radius = 0.0)

返回一个bool数组,如果路径包含相应的点,则该数组为True.

如果transform不是None,则在执行测试之前将转换路径.

radius允许路径略微变大或变小.

我将多边形存储为n*2 numpy数组(其中n非常大~500).据我所知,我需要在这个数据上调用Path()方法,这似乎工作正常:

poly_path = Path(poly_points)
Run Code Online (Sandbox Code Playgroud)

目前我还将我希望测试的点存储为另一个n*2 numpy数组(catalog_points).

也许我的问题在这里?当我跑步时:

in_poly = poly_path.contains_points(catalog_points)
Run Code Online (Sandbox Code Playgroud)

无论我使用的是什么点,我都会找回每个值包含'False'的ndarray(我已经在多边形内的点阵列上测试了这个).

python matlab numpy matplotlib

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

设置scipy.optimize.minimize的收敛容差(method ='L-BFGS-B')

该页面(http://docs.scipy.org/doc/scipy/reference/optimize.minimize-lbfgsb.html)描述了可以传递给scipy优化包的L-BFGS-B方法的求解器选项.我正在尝试设置求解器退出容差.

文档中提到了两个选项,我将优先使用的是'factr',求解器在以下情况(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps下退出:( 其中epsilon是机器精度).但是,当我运行我的代码时会收到警告:

OptimizeWarning:未知的求解器选项:factr

所以我认为这个选项已被弃用而不赞成ftol(不知道为什么会这样?).ftol是指定的数字(即diff <= n而不是<= n*machine_error).

这对我来说很好,但是我得到的求解器的退出信息是

收敛:REL_REDUCTION_OF_F _ <= _ FACTR*EPSMCH

这表明L-BFGS-B例程仍在使用某些我不知道的factr值,而且似乎无法指定.在代码中可能是一个被忽视的错误,可能是我错过了一些传递选项的方法.使用这个流行解算器的人是否知道解决方法?

谢谢

我也在scipy github存储库上打开了一个问题.

python optimization scipy

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

标签 统计

python ×2

matlab ×1

matplotlib ×1

numpy ×1

optimization ×1

scipy ×1