在numpy数组上应用函数而不循环

时间:2018-02-02 18:29:05

标签: python numpy

  1. 因此我们可以使用numpy数组执行此操作:

    IN:
     a = np.array([1,2,3])
     b = np.array([[1,2,3], [1,2,4], [1,2,5]])
     a+b
    OUT:
      array([[2, 4, 6],
             [2, 4, 7],
             [2, 4, 8]])
    
  2. 我有这个功能,其中di和dj是相同长度的列表或数组,KL是scipy.stats.entropy

    def dis(di,dj):
        di = np.array(di)
        dj = np.array(dj)
        m =  0.5 * (di+dj)
        kl1 = KL(di,m)
        kl2 = KL(dj,m)
        return 0.5*(kl1+kl2)
    
  3. 我想知道是否有办法将这个功能应用为+ b:

    dis(a,b) 
    
  4. 所以不要这样做:

     for x in b:
         dis(a,x)
    

    尝试运行时出现此错误:

        dis(a,b)
    

    Error

    更新由于hpaulj建议解决错误后,我得到以下结果: 结果2

    结果的问题是KL应该只给出正值。所以我不安静得到的是:         DIS(A,B) 实际上是在做。

0 个答案:

没有答案