多维列表最快的去重方法
时间: 2023-07-11 18:20:54 浏览: 52
多维列表的去重可以使用哈希表来实现。具体步骤如下:
1. 定义一个空的哈希表和一个空的列表。
2. 遍历原始的多维列表,对于每个元素进行如下操作:
- 将元素转换为不可变类型(如元组)。
- 判断该元素是否已经在哈希表中存在,如果不存在,将其添加到哈希表中,并将其添加到新列表中。
3. 返回新列表。
这种方法的时间复杂度为 O(n),是最快的去重方法之一。下面是代码示例:
```python
def deduplicate(lst):
seen = set()
new_lst = []
for item in lst:
key = tuple(item)
if key not in seen:
seen.add(key)
new_lst.append(item)
return new_lst
```
其中,`lst` 是原始的多维列表。
相关问题
多维列表去重的内置函数
Python内置的set()函数可以用来对多维列表进行去重操作。需要注意的是,set()函数只能处理可哈希(hashable)的元素,因此需要将列表转换为元组后再进行去重。下面是一个示例代码:
```python
lst = [[1, 2], [2, 3], [1, 2]]
result = list(set(tuple(sublst) for sublst in lst))
print(result)
```
输出结果为:
```
[(2, 3), (1, 2)]
```
这里先使用了一个列表推导式将原始列表中的子列表转换为元组,然后再将元组放入set()函数中进行去重操作。最后再将去重后的元组列表转换为原始的多维列表格式。
pytorch多维张量根据维度去重
如果你想在 PyTorch 中根据某个维度对多维张量进行去重操作,你可以使用 `torch.unique` 函数并指定 `dim` 参数来实现。
下面是一个示例代码,演示如何根据维度对多维张量进行去重:
```python
import torch
# 创建一个多维张量
x = torch.tensor([[1, 2, 3], [4, 2, 1], [1, 2, 3]])
# 根据第一维度进行去重
unique_values, indices = torch.unique(x, dim=0, return_inverse=True)
# 打印去重后的张量和索引
print("去重后的张量:")
print(unique_values)
print("原张量中每个元素在去重后张量中的索引:")
print(indices)
```
运行以上代码,会输出去重后的张量和每个元素在去重后张量中的索引:
```
去重后的张量:
tensor([[1, 2, 3],
[4, 2, 1]])
原张量中每个元素在去重后张量中的索引:
tensor([0, 1, 0])
```
这里使用 `torch.unique` 函数对多维张量进行去重操作。通过设置 `dim=0` 参数,我们指定对第一维度进行去重。`return_inverse=True` 参数用于返回原张量中每个元素在去重后张量中的索引。
需要注意的是,返回的 `unique_values` 张量中的顺序是按照去重后的顺序排列的,而不是原始张量中的顺序。如果需要保留原始张量的顺序,可以使用 `torch.sort` 函数对索引进行排序操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![js](https://img-home.csdnimg.cn/images/20210720083646.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)