繁体   English   中英

如何在python中使指示器功能更快或更聪明?

[英]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

可能会有更好的解决方案,但是很难不知道Fifeat真正含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM