一、解释
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
本文介绍了Numpy数组中d[True]的用法,它用于将数组所有元素设置为特定值。通过示例展示了当数组为整数或列表时,如何使用d[True]进行赋值。在学习ReLU函数的导数计算代码中,d[x<0]=0和d[x>=0]=1这两行代码分别将负值和正值元素设为0和1,实现导数计算。布尔索引在Numpy中的应用是数组操作的重要部分。
https://www.cainiaojc.com/numpy/numpy-array-filter.html

被折叠的 条评论
为什么被折叠?



