如何原地修改PyTorch Tensor的值?按条件(>0设0/<0设1)赋值
解决方案
你可以用PyTorch的torch.where函数一行实现这个需求,这是专门针对张量的条件赋值操作,比遍历高效得多:
import torch # 原始张量 t = torch.tensor([0.0872, 0.4737, 0.0954]) # 按规则转换 result = torch.where(t > 0, torch.tensor(0), torch.tensor(1))
运行后result就是tensor([0, 0, 0]),如果张量里包含负数,比如t = torch.tensor([0.0872, -0.4737, 0.0954]),转换后会得到tensor([0, 1, 0]),完全匹配你的规则。
补充简化写法
如果你想要更精简的代码,也可以利用布尔张量转长整型的特性:
result = (t < 0).long()
这个写法会把小于0的元素转为1,大于等于0的元素转为0,同样满足你的需求。
内容的提问来源于stack exchange,提问作者shuai wang
相关产品推荐
相关产品推荐

