gpt4 book ai didi

Python:对 graphlab.SFrame 的所有行的一行的不同列进行迭代操作

转载 作者:行者123 更新时间:2023-11-30 22:57:18 43 4
gpt4 key购买 nike

有一个 SFrame,其中的列具有 dict 元素。

import graphlab
import numpy as np
a = graphlab.SFrame({'col1':[{'oshan':3,'modi':4},{'ravi':1,'kishan':5}],
'col2':[{'oshan':1,'rawat':2},{'hari':3,'kishan':4}]})

我想计算 SFrame 每一行的这两列之间的 cosine 距离。下面是使用for循环的操作。

dis = np.zeros(len(a),dtype = float)
for i in range(len(a)):
dis[i] = graphlab.distances.cosine(a['col1'][i],a['col2'][i])

a['distance12'] = dis

这是非常低效的,如果行数很大,则需要几个小时。有人可以建议更好的方法吗?

最佳答案

您通常可以使用 apply 函数来避免循环 SFrame。在你的情况下,它看起来像这样:

a.apply(lambda row: graphlab.distances.cosine(row['col1'], row['col2']))

这应该比 Python 中的循环快得多。

关于Python:对 graphlab.SFrame 的所有行的一行的不同列进行迭代操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740079/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com