代码急转弯——np.unique与set
numpy 的 unique 能替代 set 吗?
1、基本用法
np.unique用于计算数组中的唯一元素,例如
import numpy as np
a = [1,2,1,3,1,2]
b = np.unique(a)
print(b)
结果为
[1 2 3]
2、坑 = 数组元素为数组
数组元素为数组时,结果与预期不一致,如
import numpy as np
a = [(1,2),(1,3),(1,2)]
b = np.unique(a)
print(b)
运行结果如下,难道不应该是[(1,2),(1,3)]吗?
[1 2 3]
把元素类型改为列表也是如此
import numpy as np
a = [[1,2],[1,3],[1,2]]
b = np.unique(a)
print(b)
结果为
[1 2 3]
再改为集合类型,结果是错的,没有找出唯一元素。
import numpy as np
a = [{1,2},{1,3},{1,2}]
b = np.unique(a)
print(b)
哇塞,竟然如此
[{1, 2} {1, 3} {1, 2}]
3、试试 set
先看元组
import numpy as np
a = [(1,2),(1,3),(1,2)]
b = set(a)
print(b)
结果为
{(1, 2), (1, 3)}
如果数组元素是列表\集合的话,可先转换为元组
import numpy as np
a = [{1,2},{1,3},{1,2}]
a_tuple = [tuple(k) for k in a]
b = set(a_tuple)
print(b)
结果如下,与预期一致。
{(1, 2), (1, 3)}
调用set得到的结果为集合类型,可转变为所需要的其他类型。
结论:有时不行
【上一个坑:str 与 repr 有何差别?】
【下一个坑:命令与脚本有差别吗?】