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

Tae*_*gol 5 python numpy python-3.x

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

predictions[predictions < 1e-10] = 1e-10
Run Code Online (Sandbox Code Playgroud)

此代码段来自使用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]
Run Code Online (Sandbox Code Playgroud)

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

这条线做什么?

M.T*_*M.T 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])
Run Code Online (Sandbox Code Playgroud)

在代码中这样做的原因可能是为了防止被零除,或者通过插入一个非常小的数字来防止负数搞乱事情。