NumPy 集合运算
本章节主要讲解 NumPy 的集合运算(set operations),包括(创建集合unique、并集union1d、交集intersect1d、差集setdiff1d、对称差集setxor1d)。
什么是集合
数学上的集合是唯一元素的集合。
集合用于频繁的交、并、差运算。
在 NumPy 中创建集合
我们可以使用 NumPy 的unique()方法从任何数组中求唯一元素。创建一个集合数组,但请记住集合数组只能是一维数组。
实例
将具有重复元素的以下数组转换为集合:
import numpy as nparr = np.array([1, 1, 1, 2, 3, 4, 5, 5, 6, 7])x = np.unique(arr)print(x)
求并集(union1d)
求两个数组的唯一值,请使用 union1d() 方法。
实例
求以下两个集合数组的并集:
import numpy as nparr1 = np.array([1, 2, 3, 4])arr2 = np.array([3, 4, 5, 6])newarr = np.union1d(arr1, arr2)print(newarr)
求交集(intersect1d)
若要仅获得两个数组中都存在的值,请使用 intersect1d() 方法。
实例
求以下两个集合数组的交集:
import numpy as nparr1 = np.array([1, 2, 3, 4])arr2 = np.array([3, 4, 5, 6])newarr = np.intersect1d(arr1, arr2, assume_unique=True)print(newarr)
注意:intersect1d()方法采用可选参数 assume_unique,如果将其设置为 True,则可以加快计算速度。 处理集合时,应始终将其设置为 True。
求差集(setdiff1d)
只获取第一个集合中没有出现在第二个集合中的值,请使用 setdiff1d() 方法。
实例
求 set1 与 set2 的差异:
import numpy as npset1 = np.array([1, 2, 3, 4])set2 = np.array([3, 4, 5, 6])newarr = np.setdiff1d(set1, set2, assume_unique=True)print(newarr)
注意:setdiff1d()方法采用可选参数 assume_unique,如果将其设置为 True,则可以加快计算速度。 处理集合时,应始终将其设置为 True。
求对称差集(setxor1d)
若要仅获取两个集合中都不存在的值,请使用 setxor1d() 方法。
实例
找到 set1 和 set2 的对称差:
import numpy as npset1 = np.array([1, 2, 3, 4])set2 = np.array([3, 4, 5, 6])newarr = np.setxor1d(set1, set2, assume_unique=True)print(newarr)
注意:setxor1d()方法采用可选参数 assume_unique,如果将其设置为 True,则可以加快计算速度。 处理集合时,应始终将其设置为 True。