Python列表表示法,Numpy数组表示法:预测[预测< 1e-10] = 1e-10

时间:2016-07-25 08:53:41

标签: python python-3.x numpy

我试图找出列表上应用的操作。我有列表/数组名称预测,并执行以下一组指令。

predictions[predictions < 1e-10] = 1e-10

此代码段来自使用Numpy的Udacity Machine Learning分配。

以下列方式使用:

def logprob(predictions, labels):
    """Log-probability of the true labels in a predicted batch."""
    predictions[predictions < 1e-10] = 1e-10
    return np.sum(np.multiply(labels, -np.log(predictions))) / labels.shape[0]

正如@MosesKoledoye和其他人所指出的那样,它实际上是一个Numpy阵列。 (Numpy是一个Python库)

这条线做什么?

2 个答案:

答案 0 :(得分:4)

正如@MosesKoledoye所指出的,predictions很可能是numpy数组。

然后使用predictions < 1e-10生成布尔数组。在由条件设置的布尔数组为True的所有索引处,该值将更改为1e-10,即。 10 -10

示例:

  >>> a = np.array([1,2,3,4,5]) #define array
  >>> a < 3 #define boolean array through condition
  array([ True,  True, False, False, False], dtype=bool)

  >>> a[a<3]  #select elements using boolean array
  array([1, 2])

  >>> a[a<3] = -1  #change value of elements which fit condition
  >>> a 
  array([-1, -1,  3,  4,  5])

这可能在代码中完成的原因可能是防止除零或防止负数扰乱事物,而是插入一个非常小的数字。

答案 1 :(得分:1)

条件(元素&lt; 1e-10)为真的数组的所有元素都设置为1e-10。 实际上,您正在设置最小值。