Numpy数组中d[True]=1的含义

一、解释

        Numpy数组中d[True]的含义,是d中所有值都赋值为1。

        d[True] = 1,是所有值都满足条件的意思,并且其值均改为1,同理如果为 d[False] = 1 并不起实际作用。

二、示例

import numpy as np


if __name__ == "__main__":
    # 当数值为int时
    d = np.array(-3)
    d[True] = 9
    print(d) # 输出9

    # 当数值为列表时
    d = np.array([-3, 0, 3])
    d[True] = 9
    print(d) # 输出[9 9 9]

        如上述代码示例所示,当数值为列表时,推测 d[True] 自动扩展成 d[[True, True, True]]

三、问题来源

def derivative(x): # ReLU 函数的导数
    d = np.array(x, copy=True) # 用于保存梯度的张量
    d[x < 0] = 0 # 元素为负的导数为 0
    d[x >= 0] = 1 # 元素为正的导数为 1
    return d

        在学习上述ReLU函数求导的代码中,遇见了一个没理解的地方。例如当函数输入x=-3,返回d=0。但是d[x < 0] = 0d[x >= 0] = 1这两行代码没能理解其意义。目前的理解是,如x = -3时,d[x < 0] = 0 这行代码等价于 d[True] = 0,类似的d[x >= 0] = 1则等价于d[False] = 1。

四、参考资料

1. 《NumPy 数组筛选》

NumPy 数组筛选 - Numpy教程 - 菜鸟教程数组过滤从现有数组中取出一些元素并从中创建新数组称为过滤(filtering)。在 NumPy 中,我们使用布尔索引列表来过滤数组。布尔索引列表是与数组中的索引相对应的布尔值列表。如果索引处的值为 True,则该元素包含在过滤后的数组中;如https://www.cainiaojc.com/numpy/numpy-array-filter.html

2. 感谢 Dr. RuoBing

你可能感兴趣的:(Python,numpy,python)