我正在尝试用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)发布于 2018-04-18 23:37:37
第一个明显的优化是避免两次调用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到底是什么,那就很难说清楚了。
https://stackoverflow.com/questions/49902301
复制相似问题