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] = 0和d[x >= 0] = 1这两行代码没能理解其意义。目前的理解是,如x = -3时,d[x < 0] = 0 这行代码等价于 d[True] = 0,类似的d[x >= 0] = 1则等价于d[False] = 1。
1. 《NumPy 数组筛选》
2. 感谢 Dr. RuoBing