Python:数组和列表的集合运算

数组np.array的集合运算

  • np.unique(x):计算x中的唯一元素,并返回有序结果
  • np.intersect1d(x,y):计算x和y中的公共元素,并返回有序结果
  • np.union1d(x,y):计算x和y的并集,并返回有序结果
  • np.in1d(x,y):用于测试一个数组中的值在另一个数组中的成员资格,得到一个表示“x的元素是否包含于y”的布尔型数组
  • np.setdiff1d(x,y):集合的差,即元素在x中且不在y中
  • np.setxor1d(x,y):集合的对称差,即存在于一个数组中,但不同时存在于两个数组中的元素

列表list的集合运算

  • a = t $|$ s : t 和 s的并集
  • b = t & s : t 和 s的交集
  • c = t – s : 求差集(项在t中,但不在s中)
  • d = t ^ s : 对称差集(项在t或s中,但不会同时出现在二者中)

去掉numpy数组a中与b重复的元素,但是不改变顺序

a=np.array([2,3,4,1,2,3]) b=np.array([4,5])

a[np.in1d(a,b)] Out: array([4])

a[np.in1d(a,b,invert=True)] Out: array([2, 3, 1, 2, 3])

注意:这里使用np.in1d(v,left)返回的结果是布尔值,是left元素在v中,按照v的顺序排列的出现的真假值

链接:https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.in1d.html

删除某个元素

numpy 使用np.del() 删除某个指定位置的元素 list 使用a.remove() 删除指定元素 numpy 不能像list直接删除,但是可以选择提取: a[a!=3] 提取a中不含有3的元素

改变整型

整数元素的array进行numpy集合运算时候,会发生整型变浮点,使用 a.astype(int) 可以改变回来,无论array a 有多少个元素. 链接https://blog.csdn.net/elecjack/article/details/50920318