首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只列出与基于函数输出的标准匹配的熊猫行

只列出与基于函数输出的标准匹配的熊猫行
EN

Stack Overflow用户
提问于 2016-06-27 23:30:43
回答 1查看 107关注 0票数 0

我有一个由mx+b定义的行,其中m,b是从np.linalg.lstsq获取的变量。

还创建了一个称为“距离”的函数,定义为:

代码语言:javascript
复制
def distance(x0, y0, slope, yintercept):
    """Returns the euclidean distance between a line and
    a point"""
    return abs(slope*x0-y0+yintercept)/(slope**2+1)**.5

为了方便起见,我创建了一个向量化表单,如下所示:

vdistance = np.vectorize(distance,otypes=[np.float])

我有一个名为spiral的熊猫数组,它包含了不规则螺旋上的一些点。这只熊猫有三个字段(除其他外):spiral.t , spiral.x, spiral.y,其中t是一个时间上的递增值,x,y是笛卡尔平面上的螺旋坐标(rect坐标)。

因此,对于每一对spiral.x,spiral.y,我都有一个对应的spiral.t

我可以很容易地计算出从螺旋线上的每一点到开始时定义的直线的距离。

distance(spiral.x, spiral.y, m, b)

因为是熊猫,所以当我给spiral.x打电话时,我得到了整个专栏。因此,我做到了:

代码语言:javascript
复制
x0 = np.array(spiral.x)
y0 = np.array(spiral.y)

dist=vdistance(x0,y0,m,b)

我有一个具有所有距离的np.array dist。这样,我就可以得到indexes <= K,其中K对我来说是一个合理的距离,足够接近行(在本例中是250):

代码语言:javascript
复制
near = np.where(dist <= 250)

现在,对于附近的每一个值,我可以在螺旋线上迭代,检索正确的ts。(因为t不以相同的速度增长)。

代码语言:javascript
复制
ts=[]
for i in near:
    ts += [ spiral.t[i] ]

我的问题是,这是如何在一次与熊猫拍摄?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-28 00:06:11

您可以使用df.apply()迭代行并访问函数的多个列。

df[df.apply(distance, axis=1)]

这里的axis=1告诉apply对行进行迭代。df.apply()将在列上迭代,如果是axis=0。该语句的结果是一个dataframe,它是df的一个子集,行数较少。

要使此工作,您的distance函数应该返回一个布尔值。这一职能的逻辑可以是:

代码语言:javascript
复制
def distance(row):
    dist = compute_dist(row['x'], row['y'])
    if dist < 250:
        return True
    return False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38064793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档