如何用pytorch将[[1, 2, 2], [3, 3, 4], [1, 2, 3]]去重后变成[[1, 2, 0], [3, 0, 4], [1, 2, 3]]
时间: 2023-08-18 22:01:58 浏览: 42
要将[[1, 2, 2], [3, 3, 4], [1, 2, 3]]去重后变成[[1, 2, 0], [3, 0, 4], [1, 2, 3]],你可以使用torch.unique()函数结合torch.zeros_like()函数来实现。下面是一个示例代码:
```python
import torch
# 原始张量
tensor = torch.tensor([[1, 2, 2], [3, 3, 4], [1, 2, 3]])
# 去重并填充重复的地方为0
unique_tensor, indices = torch.unique(tensor, return_inverse=True)
filled_tensor = torch.zeros_like(tensor)
filled_tensor.scatter_(1, indices.unsqueeze(-1), unique_tensor)
filled_tensor[torch.eq(filled_tensor, tensor)] = 0
print(filled_tensor)
```
在这个示例中,我们首先使用torch.unique()函数进行去重,并通过设置return_inverse=True来获取去重后的唯一元素以及重复元素在去重后张量中的索引。然后,我们使用torch.zeros_like()函数创建一个与原始张量相同大小的全0张量。接下来,我们使用torch.scatter_()函数将去重后的元素按照索引填充到全0张量中。最后,我们使用torch.eq()函数找出原始张量中与填充后张量相同位置的元素,并将其修改为0。
运行以上代码,你将得到去重并在重复的地方填充0的张量。
希望对你有所帮助!如果有任何问题,请随时提问。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)