【numpy】4、集合操作

构造集合

numpy.unique(ar, return_index = False, return_inverse = False, return_counts = False, axis = None)

对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表

  • return_index=True 表示返回新列表元素在旧列表中的位置。
  • return_inverse=True表示返回旧列表元素在新列表中的位置。
  • return_counts=True表示返回新列表元素在旧列表中出现的次数。
x = np.array(['a', 'b', 'b', 'c', 'a'])
u, index = np.unique(x, return_index=True)
print(u)  # ['a' 'b' 'c']
print(index)  # [0 1 3]
print(x[index])  # ['a' 'b' 'c']

布尔运算

numpy.in1d(ar1, ar2, assume_unique=False, invert=False)
返回与ar1长度相同的布尔数组,如果ar1的元素在ar2中,则返回True,否则返回False。
invert = True时则相反,不在为True

test = np.array([0, 1, 2, 5, 0])
states = [0, 2]
mask = np.in1d(test, states, invert=True)
print(mask)  # [False  True False  True False]
print(test[mask])  # [1 5]

两个集合的交集

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)

  • 求两个数组的唯一化+求交集+排序函数。
x = np.array([1, 1, 2, 3, 4])
y = np.array([2, 1, 4, 6])
xy, x_ind, y_ind = np.intersect1d(x, y, return_indices=True)
print(x_ind)  # [0 2 4] 相同元素在x中的位置
print(y_ind)  # [1 0 2] 相同元素在y中的位置
print(xy)  # [1 2 4]    相同元素
print(x[x_ind])  # [1 2 4]
print(y[y_ind])  # [1 2 4]
#求交集
from functools import reduce
x = reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
print(x)  # [3]

两个集合的并集

numpy.union1d(ar1, ar2)
reduce(numpy.union1d,(ar1, ar2, ar3)) #三个集合

两个集合的差集

numpy.setdiff1d(ar1, ar2, assume_unique = False)
返回ar1 中不存在于ar2中的元素

两个集合的异或

numpy.setxor1d(ar1, ar2, assume_unique=False)
集合的对称差,即两个集合的交集的补集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值