小编Fab*_*bzi的帖子

如何处理Shapely中的舍入错误

我有一个案例,它基于在一条线上投射一个点,然后在它上面分开这一行.我的用例稍微复杂一些,但我的问题可以通过以下代码重现:

from shapely import *
line1 = LineString([(1,1.2), (2,2), (3, 2.), (4,1.2)])
pt = Point(2.5, 1.2)
pr = line1.interpolate(line1.project(pt))
Run Code Online (Sandbox Code Playgroud)

通过构造,"pr"应该在第1行和它们的交叉点上:

line1.contains(pr)
line1.intersects(LineString([pt, pr]))
Run Code Online (Sandbox Code Playgroud)

打印两次"True".但是改变输入坐标会略微制动工作流程:

from shapely import *
line1 = LineString([(1,1.2), (2,2), (3, 2.3), (4,1.2)])
pt = Point(2.5, 1.2)
pr = line1.interpolate(line1.project(pt))
line1.contains(pr)
line1.intersects(LineString([pt, pr]))
Run Code Online (Sandbox Code Playgroud)

打印"假".

我理解这背后的浮动精度问题,但这是否意味着我永远无法测试线上的点?当我根据点列表构建一条线时,我能确定至少所有"构造"点都在线上吗?

python shapely

9
推荐指数
2
解决办法
1258
查看次数

xarray:从每月重新采样的平均值(不是气候学)计算每日异常

xarray 的文档解释了如何计算每月climatology 的异常值。在这里,我试图做一些稍微不同的事情:从每日时间序列,我想计算本月平均值(而不是每月气候学)的每日异常

我设法使用 groupby 和手动创建的每月邮票(下面的代码)来做到这一点。有没有更好、更简单的方法来获得相同的结果?

import xarray as xr
import numpy as np
import pandas as pd

# Create a data array
t = pd.date_range('2001', '2003', freq='D')
da = xr.DataArray(np.arange(len(t)), coords={'time':t}, dims='time')

# Monthly time stamp for groupby
da.coords['stamp'] = ('time', [str(y) + '-' + str(m) for (y, m) in 
                               zip(da['time.year'].values, 
                                   da['time.month'].values)])

# Anomaly
da_ano = da.groupby('stamp') - da.groupby('stamp').mean()

da_ano.plot();
Run Code Online (Sandbox Code Playgroud)

绘图输出

python python-xarray xarray

3
推荐指数
1
解决办法
824
查看次数

标签 统计

python ×2

python-xarray ×1

shapely ×1

xarray ×1