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

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

一、解释

        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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值