[英]How can I make the indicator function faster or smarter in python?
我正在尝试在python中复制ML论文。 我唯一需要做的就是更好地完成指标函数,这是什么:给定F,特征fi是否在其中? 结果应为1或0。我正在使用矩阵700个样本x 8个特征。 我想检查特征是否在集合F中。这是我的代码。 它起作用,但是非常缓慢。 令X为完整矩阵,且X [:,i] = feat。 F可以为空集或包含X的特征
def I (feat,F):
respuesta=[]
for i in F:
respuesta.append(np.all(i==feat))
if np.any(respuesta)==True:
result=1
elif np.any(respuesta)==False:
result=0
else:
raise ValueError('something hapens')
return(result)
第一个明显的优化方法是避免两次调用np.any(respuesta)
。
if np.any(respuesta)==True:
result=1
elif np.any(respuesta)==False:
result=0
return result
可以替换为
return np.any(respuesta)
但是即使那样,由于一个有效的结果就足够了,因此也没有充分的理由就需要构建整个respuesta
列表。 因此,您可以在第一个有效结果上返回True:
def I (feat,F):
for i in F:
if np.all(i==feat):
return True
return False
可能会有更好的解决方案,但是很难不知道F
, i
和feat
真正含义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.