一个n*m的二维非零tensor,如何将小于0.5的元素设置为零
在 PyTorch 中,你可以使用布尔索引(Boolean Indexing)来将小于 0.5 的元素设置为零。以下是实现代码:
示例代码:
import torch
# 假设你的二维 tensor 是 t,形状为 (n, m)
t = torch.rand(n, m) # 示例数据,随机生成一个 n*m 的 tensor
# 将小于 0.5 的元素设置为零
t[t < 0.5] = 0
print(t)
代码说明:
t < 0.5
:- 生成一个布尔掩码(Boolean Mask),其中小于 0.5 的元素为
True
,否则为False
。
- 生成一个布尔掩码(Boolean Mask),其中小于 0.5 的元素为
t[t < 0.5] = 0
:- 使用布尔掩码索引,将小于 0.5 的元素设置为零。
示例:
假设 t
的值为:
tensor([[0.2, 0.6, 0.4],
[0.7, 0.3, 0.8],
[0.1, 0.9, 0.5]])
运行代码后,t
的值将变为:
tensor([[0.0, 0.6, 0.0],
[0.7, 0.0, 0.8],
[0.0, 0.9, 0.5]])
注意事项:
- 这种方法会直接修改原始 tensor
t
。如果你希望保留原始 tensor,可以先创建一个副本:t_clone = t.clone() # 创建副本 t_clone[t_clone < 0.5] = 0