Python Numpy中数组的集合操作详解
作者:古明地觉 发布时间:2023-12-04 12:02:24
标签:Python,Numpy,数组,集合
我们知道两个 set 对象之间,可以取交集、并集、差集、对称差集,举个例子:
s1 = {1, 2, 3}
s2 = {2, 3, 4}
"""
&: 交集
|: 并集
-: 差集
^: 对称差集
"""
# 以下几种方式是等价的
# 但是一般我们都会使用操作符来进行处理,因为比较方便
print(s1 & s1)
print(s1.intersection(s2))
print(set.intersection(s1, s2))
"""
{2, 3}
{2, 3}
{2, 3}
"""
print(s1 | s2)
print(s1.union(s2))
print(set.union(s1, s1))
"""
{1, 2, 3, 4}
{1, 2, 3, 4}
{1, 2, 3, 4}
"""
print(s1 - s2, s2 - s1)
print(s1.difference(s2),
s2.difference(s1))
print(set.difference(s1, s2),
set.difference(s2, s1))
"""
{1} {4}
{1} {4}
{1} {4}
"""
print(s1 ^ s2)
print(s1.symmetric_difference(s2))
print(set.symmetric_difference(s1, s2))
"""
{1, 4}
{1, 4}
{1, 4}
"""
# 另外,我们还可以同时对多个集合操作,不仅仅是两个
print({1, 2, 3} & {2, 3, 4} & {3, 4, 5}) # {3}
那么 Numpy 的数组之间,可不可以执行这些操作呢?答案是可以的,Numpy 提供了一些 API,用于数组之间的集合运算。
但需要注意,数组虽然也支持 & 等操作符,但是它们代表的意义和集合无关。
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
# 两个数组 &
# 表示将数组里面对应的元素分别进行"按位与"操作
print(arr1 & arr2) # [0 2 0]
所以我们需要使用 Numpy 提供的 API 进行运算。
import numpy as np
arr1 = np.array([1, 2, 2, 3])
arr2 = np.array([2, 3, 4, 4])
# 取交集
print(
np.intersect1d(arr1, arr2)
) # [2 3]
# 取并集
print(
np.union1d(arr1, arr2)
) # [1 2 3 4]
# 取差集
print(
np.setdiff1d(arr1, arr2),
np.setdiff1d(arr2, arr1)
) # [1] [4]
# 取对称差集
print(
np.setxor1d(arr1, arr2)
) # [1 4]
接收两个数组,返回一个数组。并且原始数组中的元素允许重复,对结果没有影响。
另外,上面的函数都只能接收两个数组,如果我们想同时对任意多个数组操作呢?很简单,使用 reduce 即可。
from functools import reduce
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([2, 3, 4])
arr3 = np.array([3, 4, 5])
print(
reduce(np.intersect1d,
[arr1, arr2, arr3])
) # [3]
总的来说还是比较简单的。
来源:https://mp.weixin.qq.com/s/DCet9vqT_aV-N2LIIQ_9Og


猜你喜欢
- 下半年毕业季,各种毕业设计纷涌而至,虽然学校教了Python,但是我相信各位肯定没有认真学,做作业就懵逼的那种~所以我都给大家准备好了!各种
- 背景随着业务的发展,公司业务和规模不断扩大,网站积累了大量的用户信息和数据,对于一家互联网公司来说,用户和业务数据是根基。一旦公司的数据错乱
- 初步认识k-means翻译过来就是K均值聚类算法,其目的是将样本分割为k个簇,而这个k则是KMeans中最重要的参数:n_clusters,
- 不同的数字之间使用 空格“ ”,“$”,"*"等隔开,支持带小数点的字符串NumArray=str2num(LineSt
- 本文实例讲述了Python实现爬取逐浪小说的方法。分享给大家供大家参考。具体分析如下:本人喜欢在网上看小说,一直使用的是小说下载阅读器,可以
- 这几天一直困惑我的问题,我觉得pycharm应该也是有的啊,偶然间找到了这个。把那个框里的选中,就可以了。ps:我的是 PyCharm 20
- 平常我们只听说过ADO等一类ASP对象,但在ASP中还有个鲜为人知的专门SQL Server的ASP访问对象,它就是SQLOLE.SQLSe
- 一、TensorTensor(张量是一个统称,其中包括很多类型):0阶张量:标量、常数、0-D Tensor;1阶张量:向量、1-D Ten
- 1.引言创建命令行程序很棒:命令行可以按照我们的设定完成相应的工作,相比GUI界面程序,无需花费数小时尝试使 GUI 正常工作。但有时最好有
- 目录一、为什么使用 .gitignore ?二、使用规则2.1 注释2.2 忽略文件(1)忽略文件和目录(2)仅忽略文件2.3 忽略目录2.
- 一、torch.utils.data.DataLoader 简介作用:torch.utils.data.DataLoader 主要是对数据进
- 1、随机生成4位数的随机数<script language="javascript">/*** 随机生成4位
- 1. Pytorch风格的索引根据Tensor的shape,从前往后索引,依次在每个维度上做索引。示例代码:import torcha =
- 需求:在刷word题库的时候,答案就在题目下方,干扰复习效果,将答案字体变成白色,查看答案的时候只需要将答案背景刷黑转换需求:在word中找
- 在学习OpenCV或者其他关于Python技术的时候,我们通常需要准备不同的Python环境,我选择了Anaconda作为我的Python环
- 当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种:1、分表,即把一个很大的表达数据分到几
- 对于小型站点,使用七牛云存储的免费配额已足够为站点提供稳定、快速的存储服务七牛云存储已有Python SDK,对它进行简单封装后,就可以直接
- 代码如下:<% '隐藏并修改文件的最后修改时间的aspshell '原理:通过FSO可以修改文件的
- BN原理、作用函数参数讲解BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, tr
- 在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX,