背景

什么是 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”、“智能机器人研究中心”和“大数据与哲学社会科学实验室”的一员。

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

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

Numpy入门教程:08. 集合操作相关推荐

  1. numpy 数组抽取_清晰易懂的Numpy入门教程

    原标题:清晰易懂的Numpy入门教程 翻译 | 石头 来源 | Machine Learning Plus Numpy是python语言中最基础和最强大的科学计算和数据处理的工具包,如数据分析工具pa ...

  2. python numpy教程_Python中的Numpy入门教程

    这篇文章主要介绍了 Python 中的 Numpy 入门教程,着重讲解了矩阵中的数组操作 , 需要的 朋友可以参考下 1 . Numpy 是什么 很简单, Numpy 是 Python 的一个科学计算 ...

  3. Numpy入门教程:练习作业01

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

  4. Numpy入门教程:03.数组操作

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

  5. 理想国Numpy入门教程

    01.简介 Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度数组 Numpy支持常见的数组和矩阵操作,对于同样的数值计算任务,使用Numpy比直接 ...

  6. 【数据分析】Numpy入门教程(超详细)

    Numpy 教程 什么是Numpy?Numpy(Numerical Python)是一个Python扩展库,支持大量的维度数组和矩阵运算,此外也针对数组运算提供大量的数学函数库. 其主要用于数组计算, ...

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

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

  8. Numpy入门教程:练习作业02

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

  9. Numpy入门教程:07. 随机抽样

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

最新文章

  1. Data truncation: Data truncated for column/Data too long for column
  2. 阿里开发者招聘节 | 2019阿里巴巴技术面试题分享:20位专家28道题
  3. Shaolin HDU - 4585(map模板题)
  4. Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing 二分 + check
  5. LeetCode 804. 唯一摩尔斯密码词(哈希+set)
  6. Python Chainmap函数 - Python零基础入门教程
  7. xp速度比服务器系统,让Windows XP跑得更快更稳
  8. java代码怎样整体左移_java 多行代码左移
  9. 路径空间HDOJ 4514 - 湫湫系列故事——设计风景线 并查集+树型DP
  10. 【linux高级程序设计】(第十一章)System V进程间通信 4
  11. laravel 社会化(联合)登录扩展包(QQ、微信、微博等)
  12. weblogic部署war包
  13. csdn博客文章头部自动生成目录
  14. Activity设置透明主题
  15. Java实现DOCX文件和DOC文件互转
  16. 幽默故事:1、我喜欢的女神;2、农村淑女(木子家原创)
  17. 高通sdx12 audio架构
  18. 用c语言编写编码菲诺,大C论表:MKS柏涛菲诺150周年纪念款带来哪些升级
  19. 怎么卸载影子系统?卸载影子系统解决方法
  20. HDU 2977 Color Squares BFS

热门文章

  1. 软件测试培训分享:软件测试初期怎么面试工作?
  2. 在UIWindow上加类似于“回到顶部”的按钮
  3. iOS-UIWebView添加头部和尾部
  4. [转](不理想)Ubuntu下更改主显示器
  5. 异步IO一定更好吗?
  6. 开放式Android联盟成立
  7. CCNA培训课总结笔记--交换机的基本配置(十三)
  8. java 继承接口语法_java的继承、接口方面的语法及知识
  9. jsp使用mysql技术分页_JSP分页技术实现
  10. fixture详细介绍-作为参数传入,error和failed区别