Python矢量化Cod

2024-09-30 01:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在for循环中调用了这个函数。它是医院项目的联系人跟踪功能。基本上,它计算两组坐标的x和y坐标之间的距离,在这种情况下。功能如下:

def inContact(patientID, patientLng, patientLat, dev, index, _data, mapScale, distance):
    contact = []
    contactX = _data.loc[dev, 'Beacon Longtitude'].tolist()
    contactY = _data.loc[dev, 'Beacon Latitude'].tolist()
    latVect = math.fabs(float(patientLng[index]) - float(contactX[index])) * int(mapScale)
    lngVect = math.fabs(float(patientLat[index]) - float(contactY[index])) * int(mapScale)
    if latVect < distance and lngVect < distance:
        contact.append(contactX[index])
        contact.append(contactY[index])
        return True, contact
    return False, contact

虽然每次迭代的patientLngpatientLat都是相同的,但是devindex会发生变化。我真的很困惑,我该如何矢量化这段代码。你知道吗

到目前为止,我想我不需要再发送devindex号码了。你知道吗

  1. 那么,我要把contactXcontactY列表做成numpy数组吗?那我以后怎么一个一个地检查结果呢?你知道吗
  2. latVectlngVect是否也会立即成为numpy数组?你知道吗

如有任何建议,我们将不胜感激!你知道吗

另外,_data属性是一个数据帧对象。你知道吗

编辑:我已经把这部分代码移到函数之外了

if latVect < distance and lngVect < distance:
    contact.append(contactX[index])
    contact.append(contactY[index])
    return True, contact
return False, contact

函数现在如下所示:

contactX = np.array(_data.loc[dev, 'Beacon Longtitude'].tolist())
contactY = np.array(_data.loc[dev, 'Beacon Latitude'].tolist())
patientX = np.array(patientLng)
patientY = np.array(patientLat)
latVect = np.abs(float(patientX) - float(contactX)) * int(mapScale)
lngVect = np.abs(float(patientY) - float(contactY)) * int(mapScale)
return latVect, lngVect

但是,现在我得到了一个错误:只有length-1数组可以转换为python标量到行

latVect = np.abs(float(patientX) - float(contactX)) * int(mapScale) 

有人知道为什么吗?我在网上看到numpy矢量化不能接受数学函数,所以我把它改成了np.abs公司但我还是得到了错误。你知道吗


Tags: 函数devdataindexreturnnpcontactfloat

热门问题