当前位置: 首页 > 编程日记 > 正文

Numpy入门教程:08. 集合操作

背景

什么是 NumPy 呢?

NumPy 这个词来源于两个单词 – NumericalPython。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景:

  • 执行各种数学任务,如:数值积分、微分、内插、外推等。因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。
  • 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。例如,镜像图像、按特定角度旋转图像等。
  • 在编写机器学习算法时,需要对矩阵进行各种数值计算。如:矩阵乘法、求逆、换位、加法等。NumPy 数组用于存储训练数据和机器学习模型的参数。

集合操作

构造集合

  • numpy.unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None) Find the unique elements of an array.
    • return_index=True 表示返回新列表元素在旧列表中的位置。
    • return_inverse=True表示返回旧列表元素在新列表中的位置。
    • return_counts=True表示返回新列表元素在旧列表中出现的次数。

【例】找出数组中的唯一值并返回已排序的结果。

import numpy as npx = np.unique([1, 1, 3, 2, 3, 3])
print(x)  # [1 2 3]x = sorted(set([1, 1, 3, 2, 3, 3]))
print(x)  # [1, 2, 3]x = np.array([[1, 1], [2, 3]])
u = np.unique(x)
print(u)  # [1 2 3]x = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
y = np.unique(x, axis=0)
print(y)
# [[1 0 0]
#  [2 3 4]]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']x = np.array([1, 2, 6, 4, 2, 3, 2])
u, index = np.unique(x, return_inverse=True)
print(u)  # [1 2 3 4 6]
print(index)  # [0 1 4 3 1 2 1]
print(u[index])  # [1 2 6 4 2 3 2]u, count = np.unique(x, return_counts=True)
print(u)  # [1 2 3 4 6]
print(count)  # [1 3 1 1 1]

布尔运算

  • numpy.in1d(ar1, ar2, assume_unique=False, invert=False) Test whether each element of a 1-D array is also present in a second array.

Returns a boolean array the same length as ar1 that is True where an element of ar1 is in ar2 and False otherwise.

【例】前面的数组是否包含于后面的数组,返回布尔值。返回的值是针对第一个参数的数组的,所以维数和第一个参数一致,布尔值与数组的元素位置也一一对应。

import numpy as nptest = np.array([0, 1, 2, 5, 0])
states = [0, 2]
mask = np.in1d(test, states)
print(mask)  # [ True False  True False  True]
print(test[mask])  # [0 2 0]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) Find the intersection of two arrays.

Return the sorted, unique values that are in both of the input arrays.

【例】求两个数组的唯一化+求交集+排序函数。

import numpy as np
from functools import reducex = np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])
print(x)  # [1 3]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]
print(y_ind)  # [1 0 2]
print(xy)  # [1 2 4]
print(x[x_ind])  # [1 2 4]
print(y[y_ind])  # [1 2 4]x = reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
print(x)  # [3]

求两个集合的并集:

  • numpy.union1d(ar1, ar2) Find the union of two arrays.

Return the unique, sorted array of values that are in either of the two input arrays.

【例】计算两个函数的并集,唯一化并排序。

import numpy as np
from functools import reducex = np.union1d([-1, 0, 1], [-2, 0, 2])
print(x)  # [-2 -1  0  1  2]
x = reduce(np.union1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
print(x)  # [1 2 3 4 6]

求两个集合的差集:

  • numpy.setdiff1d(ar1, ar2, assume_unique=False) Find the set difference of two arrays.

Return the unique values in ar1 that are not in ar2.

【例】集合的差,即元素存在于第一个函数不存在于第二个函数中。

import numpy as npa = np.array([1, 2, 3, 2, 4, 1])
b = np.array([3, 4, 5, 6])
x = np.setdiff1d(a, b)
print(x)  # [1 2]

求两个集合的异或:

  • setxor1d(ar1, ar2, assume_unique=False) Find the set exclusive-or of two arrays.

【例】集合的对称差,即两个集合的交集的补集。简言之,就是两个数组中各自独自拥有的元素的集合。

import numpy as npa = np.array([1, 2, 3, 2, 4, 1])
b = np.array([3, 4, 5, 6])
x = np.setxor1d(a, b)
print(x)  # [1 2 5 6]

参考文献

  • https://www.jianshu.com/p/3bfe21aa1adb

当前活动


我是 终身学习者“老马”,一个长期践行“结伴式学习”理念的 中年大叔

我崇尚分享,渴望成长,于2010年创立了“LSGO软件技术团队”,并加入了国内著名的开源组织“Datawhale”,也是“Dre@mtech”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

愿我们一起学习,一起进步,相互陪伴,共同成长。

后台回复「搜搜搜」,随机获取电子资源!
欢迎关注,请扫描二维码:

相关文章:

iPhone开发技巧之工具篇(4)--- 使用afconvert转换WAV文件

转载自:http://www.yifeiyang.net/iphone-development-skills-of-tool-papers-4-wav-file-conversion-using-afconvert/ 程序中经常使用 .WAV 的音效文件,虽然可以直接使用它,但是最好转换为 apple 推荐的 .CAF 格式。 这个时候我们就可以使用…

SQLite与pandas

以下链接对SQLite使用方法总结的很棒: http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 有关利用pandas读写QSLite的内容,可参考以下链接: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html http:…

零基础学习java,这些书一定要看!

学习java技术除了看视频,看书也是非常重要的,尤其是零基础同学,本文包含学习Java各个阶段的书籍推荐,史上最全,学习Java,没有书籍怎么行,就好比出征没带兵器一个道理,这些书籍整理出…

Numpy入门教程:练习作业01

序言 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

转乱码UTF8和UTF-8网页编码

http://www.lovelucy.info/utf8-vs-utf-8.html#more-794 一、遇到的问题 曾经被字符集间复杂的转换搞怕了,正好新项目要求国际化,需要能够显示多种语言,于是一开始就规定统统使用 UTF-8 编码。 所有代码文件使用 UTF-8 编码存盘MySQL数据库所…

linux管道的执行顺序

最近有个疑问,netstat -antup|head -500 类似这条命令中,是netstat 执行完然后截取前500条记录还是,netstat 与head 并行执行,netstat 执行完500条就不再继续? 最终答案由酷学园darkdanger大大提供: 唔…

为什么学习Python数据分析

为什么学习Python数据分析?这是很多人都比较关注的一个问题,Python编程语言近几年在互联网行业是非常火爆的,尤其是在人工智能这一领域,它会大大的提高我们的工作效率等等,具体来看看下面的详细介绍就知道了。 为什么学习Python数…

Python自动化开发学习6

引子 假设我们要在我们的程序里表示狗,狗有如下属性:名字、品种、颜色。那么可以先定义一个模板,然后调用这个模板生成各种狗。 def dog(name,d_type,color):data {name:name,d_type:d_type,color:color}return data d1 dog(小七,拉布拉多,…

Numpy入门教程:09. 输入和输出

背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

第二语言综合征

前些天在看一本书,温伯格的《理解专业程序员》,其中提到有的程序员得了第二语言综合征——在学习第三、第四门语言的时候很容易,但是学习第二门简直能要了他们的命。我当时就确定我患了这个毛病,因为我一直想了解Java语言&#xf…

Python文件操作:finally子句的使用

finally子句与try-except语句连用时,无论try-except是否捕获到异常,finally子句后的代码都要执行,其语法格式如下: try: 可能出错的语句 ......except: 出错后的执行语句finally: 无论是否出错都会执行的语句 Python在处理文件时&…

Numpy入门教程:练习作业02

背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

PowerShell 导入 SQL Server 的 PS 模块

接触过UNIX或者Linux 的朋友都知道此类系统有着功能强大、无所不能的壳程序,称之为Shell。微软公司于2006年第四季度正式发布PowerShell,它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 不仅提供简便的图形化操作界面,同时提供类似于Unix, Linu…

ARM嵌入式操作系统启动

任何一个操作系统的启动都至少关注两个方面:1,程序运行栈的初始化。2,处理器外设的初始化。 在ARMv6以及以前的体系结构中,定义了七种模式分别为&…

Html5 aside标签的用法和作用

aside元素用来定义当前页面或者文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条等其他类似的有别于主要内容的部分。 aside元素的用法主要分为两种。 ● 被包含在article元素内作为主要内容的附属信息。 ● 在article元素之外使…

Numpy入门教程:10. 统计相关

背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

Windows 7+Code::Blocks+wxWidgets实录(一)

环境配置篇 玩过Linux的人应该对Code::Blocks和wxWidgets并不陌生。 Code::Blocks是一款非常有名的代码编辑器,在linux下用不惯vim的话,这是个不错的选择。但千万不要把它和编译器混淆,CB本身并没有独立编译程序的功能,需要调用系…

技巧:两部解决U盘安装windows 7

第一步:准备一个4G的U盘并使用disk part 工具制作成引导盘1、在运行中输入cmd 回车2、在黑色的命令提示符界面中输入Diskpart3、插入U盘 并输入List Disk查看4、输入Select Disk 1 (选择你的U盘所在的标识)5、输入clean 清除旧的信息6、输入c…

报Java面授班有哪些优势

​ java技术在互联网行业的高速发展,让很多人都开始学习java技术,大家都想知道学习java技术面授班好还是网络班好,小编觉得当然是面授班比较好,下面小编就带大家来详细的了解一下报Java面授班有哪些优势? ​  报Java面授班有哪…

刻意练习:Python基础 -- Task13. datetime模块详解

datetime模块 datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime、date、time 和 timedelta。 datetime类 class datetime(date):def __init__(self, year, month, day, hour, minute, second, microsecond, t…

关于java和c的选择结构和循环结构

java和c在这些结构上确实没区别。 另学会一个小技巧,在编辑界面选中段落之后按tab可以整体后移选中的段落,再按shifttab可以将选中的段落前移。转载于:https://www.cnblogs.com/hloli/archive/2012/03/15/2398675.html

从控制器到驱动器的WD——硬盘巨头启示录之西数篇

WD(Western Digital,西部数据)公司创立的时间比希捷公司还早近10年,但作为硬盘驱动器供应商的历史可不算长。1970年4月23日,一家名为General Digital(通用数字)的公司诞生了,其最初是…

java程序员入门先学什么开发者工具

学习java编程语言,那么开发工具是肯定少不了的,程序员入门基础中开发工具是一定要学会的,可以帮助开发者们提高开发效率、更优雅的写代码。由于开发者涉及的技术领域众多,以后端开发者的视角盘点平时可能用得到的工具,…

Numpy入门教程:11. 时间日期和时间增量

序言 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python。其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执行各种数学任务,如:数值积分、微分、…

C#事件的发送方和接收方(订阅方)

C#事件的发送方和接收方(订阅方)基于Windows的应用程序也是基于消息的,Windows使用预定义消息与应用程序通讯。.NET Framework将Windows消息封装在事件中,可以把事件作为对象之间的通讯介质。事件发送方:发送事件的对象…

后台管理界面模版

http://www.cssmoban.com/cssthemes/houtaimoban/index_3.shtml转载于:https://www.cnblogs.com/hellojesson/p/7805516.html

选择PMP培训学校需要注意哪些

选择PMP培训学校需要注意哪些?如今各大职场对于项目管理这个岗位都是非常有需求的,有需求就有市场,PMP培训相关证书在市面上频繁出现,想要选择PMP培训学校需要注意哪些呢?来看看下面的详细介绍。 首先,我们来详细的了解一下什么…

绝对实用 NAT + VLAN +ACL管理企业网络

在企业中,要实现所有的员工都能与互联网进行通信,每个人各使用一个公网地址是很不现实的。一般,企业有1个或几个公网地址,而企业有几十、几百个员工。要想让所有的员工使用这仅有的几个公网地址与互联网通信该怎么做呢&#xff1f…

javascript 常用功能總結

1.路径符号的含义 src"/js/jquery.js"、"../"这个斜杠是绝对路径的意思,表示的是网站根目录. 其他的如"./ " 、 "../" 、 "jquery.js" 、 "js/jquery.js"等等表示的都是相对当前网页的路径&#xff0c…

学习资源:在线学习 Python(一)

背景 Python 是一种通用编程语言,其在科学计算和机器学习领域具有广泛的应用。如果我们打算利用 Python 来执行机器学习的代码,那么对 Python 有一些基本的了解就是至关重要的。 如果我们希望熟悉 Python 基本语法结构,但不希望在本地安装I…