np.bincount、np.digitize、np.unique、np.histogram、np.searchsorted

news/2024/5/19 20:05:32

np.bincount

简介

np.bincount是统计数组中数字出现数量的函数,数值n在输入数组x中每出现1次,则输出o的o[n]+=1。

函数

官方文档
函数参数:在这里插入图片描述

  • x: 输入,1维非负数组
  • weights: 权重数组, 可选参数,如果指定了这一参数, 则某个数值n在输入数组x中每出现1次,假设这个数在x中的索引值是i, 则输出o内的o[n]+=weights[i]
  • minlength: 输出数组最短长度,可选参数。若指定了这个值,则当输出长度不足minlength时,会自动用0补齐,保证输出长度不小于minlength。

example:

import numpy as np
a = [1, 5, 2, 3, 2, 3, 10, 2]
b = np.bincount(a)
print(b)
# b = array([0, 1, 3, 2, 0, 1, 0, 0, 0, 0, 1])# 当minlength < max(a)时输出数组长度为max(a)
c = np.bincount(a, minlength=6)
print(c)
# c = array([0, 1, 3, 2, 0, 1, 0, 0, 0, 0, 1])
# 当minlength > max(a)时用0补齐
c = np.bincount(a, minlength=20)
# c = array([0, 1, 3, 2, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0])# 指定weights时,len(a) 需要等于 len(weights)
w =  w = [0.1, 0.2, 0.3, 0.2, 0.2, 0.4, 0.5, 0.1]
c = np.bincount(a, weights=w)
print(c)
# c = array([0. , 0.1, 0.6, 0.6, 0. , 0.2, 0. , 0. , 0. , 0. , 0.5])

np.digitize

介绍

获取数组x中每个值在数组的bin的区间索引

函数

官方文档
函数参数:
在这里插入图片描述

  • x: array_like
    要分箱的输入数组。在NumPy 1.10.0 之前,此数组必须是一维的,但现在可以具有任何形状。
  • bins: array_like
    箱阵列。它必须是一维且单调的。
  • right: 布尔型,可选
    指示间隔是否包括右侧或左侧 bin 边。默认行为是 (right==False),表示区间不包括右边。在这种情况下,左 bin 端是打开的,即 bins[i-1] <= x < bins[i] 是单调递增 bins 的默认行为。
  • 返回indices: 整数数组
    索引的输出数组,形状与x.

example

a = np.array([0, 1.5, 2.0, 3.2, 4, 4.8, 11])
bins = np.array([1.0, 1.3, 2.5, 4.0, 4.5, 8, 10.0])
b = np.digitize(a, bins)
# b = array([0, 2, 2, 3, 4, 5, 7])# 返回值与函数第一个参数的shape保持一致
a = np.array([[10.2, 21.4, 3.6, 14.8], [1.0, 5.0, 10.0, 15.0]])
bins = np.array([1.0, 1.3, 2.5, 4.0, 10.0])
b = np.digitize(a, bins)
# b = array([[5, 5, 3, 5], [1, 4, 5, 5]])

np.unique

介绍

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

函数

官方文档
函数参数:
在这里插入图片描述

  • arr:输入数组,如果不是一维数组则会展开
  • return_index:如果为 true,返回新列表元素在旧列表中的位置(下标),并以列表形式存储。
  • return_inverse:如果为true,返回旧列表元素在新列表中的位置(下标),并以列表形式存储。
  • return_counts:如果为 true,返回去重数组中的元素在原数组中的出现次数。
  • axis: 如果没有, ar 将被展平。如果是整数,则由给定轴索引的子数组将被展平并被视为具有给定轴维度的一维数组的元素,默认值为“无”。New in version 1.13.0.

example

import numpy as np
A = [1, 2, 2, 5, 3, 4, 3]
a = np.unique(A)
# a = [1 2 3 4 5]a, indices = np.unique(A, return_index=True)   # 返回新列表元素在旧列表中的位置(下标)
# a = [1 2 3 4 5]		 # 列表
# indices = [0 1 4 5 3]	 # 下标a, indices = np.unique(A, return_inverse=True)   # 旧列表的元素在新列表的位置
# a = [1 2 3 4 5]	
# indices = [0 1 1 4 2 3 2]	 # 下标
# a[indices] = [1 2 2 5 3 4 3]    # 使用下标重构原数组a, indices = np.unique(A, return_counts=True)    # 每个元素在旧列表里各自出现了几次
# a = [1 2 3 4 5]
# indices = [1 2 2 1 1]B = ([1, 2], [2, 5], [3, 4])
b = np.unique(B)
# b = [1 2 3 4 5]
C= ['fgfh','asd','fgfh','asdfds','wrh']
c= np.unique(C)
# c = ['asd' 'asdfds' 'fgfh' 'wrh']

np.histogram

介绍

计算出数据的频数分布情况

函数

官方文档
函数参数:
在这里插入图片描述

  • bins参数:用于设置数据的划分方式,可以是整数,表示分段的个数,也可以是实数序列,表示分段的边缘值。默认为10,通常建议根据数据的实际情况进行调整。
  • range参数:用于设置数据的范围,计算出的频数分布将会在该范围内展示。同样可以是整数或实数序列,不设置时以数据集的最小值和最大值为范围。
  • density参数:用于确定频数分布是否标准化,即是否除以总数使得和为1。默认为False。
  • cumulative参数:用于计算累积频数分布,即小于等于该值的频数之和。默认为False。

example

import numpy as np
data = np.random.randn(1000)    # 随机生成1000个数据
hist, bins = np.histogram(data, bins=10)
# hist = array([ 11,  55, 110, 217, 271, 204,  94,  30,   7,   1])
# bins = array([-3.01272002, -2.33084453, -1.64896905, -0.96709357, -0.28521809, 0.3966574 ,  1.07853288,  1.76040836,  2.44228384,  3.12415933, 3.80603481])
hist, bins = np.histogram(data, bins=10, range=(0, 1))
# hist = array([50, 42, 34, 33, 34, 31, 32, 27, 39, 25])
# bins = array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])

refer

np.searchsorted

介绍

在数组a中插入数组v(并不执行插入操作),返回一个下标列表,这个列表指明了v中对应元素应该插入在a中那个位置上

函数

官方文档
函数参数:在这里插入图片描述

  • a : 1-D array_like

输入数组。当sorter参数为None的时候,a必须为升序数组;否则,sorter不能为空,存放a中元素的index,用于反映a数组的升序排列方式。

  • v : array_like
    插入a数组的值,可以为单个元素,list或者array。
  • side : {‘left’, ‘right’}, optional
    查询方向:
    当为left时,将返回第一个符合条件的元素下标;(默认)
    当为right时,将返回最后一个符合条件的元素下标,如果没有符合的元素,将返回0或者N(a的长度)
  • sorter : 1-D array_like, optional
    存放a数组元素的index,index对应元素为升序。

example

# 正常搜索数组中的一个数字
e = np.array([1, 2, 3, 4])
f = np.searchsorted(e, 4)
# f = 3
# 搜索数组中没有的数字
h = np.searchsorted(e, 5)
# h = 4
# 如果数组不是从小到大的,会自动从小到大排列一遍
j = np.array([2, 0, 2, 1])
k = np.searchsorted(j, [2, 0])
# k = [2 0]# 搜索多个值,如果是多个值的话,就是返回一个个的索引,不是一起插入返回的
i = np.searchsorted(e, [5, 6])
# i = [4 4]g = np.searchsorted(e, 3, side="right")
# g = 3a = np.array([0,1,5,9,11,18,26,33])
np.random.shuffle(a)
# a = [0 5 26 33 11 9 18 1]
a_sort = np.argsort(a)
# a_sort = [0 7 1 5 4 6 2 3]
result16 = np.searchsorted(a, [-1, 0, 11, 15, 33, 35], side='left', sorter=a_sort)
# result16 = [0 0 4 5 7 8]
result17 = np.searchsorted(a, [-1, 0, 11, 15, 33, 35], side='right', sorter=a_sort)
# result17 = [0 1 5 5 8 8]

http://www.mrgr.cn/p/18254255

相关文章

函数指针数组

前面学习过数组 指针数组&#xff1a;用来存放数组指针&#xff08;地址&#xff09;的数组 int main() {int arr1[] { 0 };int arr2[] { 0 };int arr3[] { 0 };int* p[3] { arr1,arr2,arr3 };//指针数组return 0; }那么函数指针数组&#xff0c;就是用来存放几个类型相同…

PyTorch - GPU入门教程1

1. 安装GPU版本的PyTorch 登录PyTorch官网https://pytorch.org/&#xff0c;下载对应CUDA版本的PyTorch【不能直接pip install&#xff0c;否则安装上的是CPU版本的】 2. 查看GPU信息 &#xff08;1&#xff09;重要信息 !nvidia-smi我的GPU版本很垃圾&#xff0c;本blog仅…

GitHub上怎么寻找项目?

前言 下面由我精心整理的关于github项目资源搜索的一些方法&#xff0c;这些方法可以帮助你更快更精确的搜寻到你需要的符合你要求的项目。 写文章不易&#xff0c;如果这一篇问文章对你有帮助&#xff0c;求点赞求收藏~ 好&#xff0c;下面我们直接进入正题——> 首先我…

RS485或RS232转ETHERCAT连接ethercat转换器

最近&#xff0c;生产管理设备中经常会遇到两种协议不相同的情况&#xff0c;这严重阻碍了设备之间的通讯&#xff0c;串口设备的数据不能直接传输给ETHERCAT。这可怎么办呢&#xff1f; 别担心&#xff0c;捷米JM-ECT-RS485/232来了&#xff01;这是一款自主研发的ETHERCAT从站…

多线程案例 | 单例模式、阻塞队列、定时器、线程池

多线程案例 1、案例一&#xff1a;线程安全的单例模式 单例模式 单例模式是设计模式的一种 什么是设计模式&#xff1f; 设计模式好比象棋中的 “棋谱”&#xff0c;红方当头炮&#xff0c;黑方马来跳&#xff0c;针对红方的一些走法&#xff0c;黑方应招的时候有一些固定的…

scrcpy2.0+实时将手机画面显示在屏幕上并用鼠标模拟点击2023.7.26

想要用AI代打手游&#xff0c;除了模拟器登录&#xff0c;也可以直接使用第三方工具Scrcpy&#xff0c;来自github&#xff0c;它是一个开源的屏幕镜像工具&#xff0c;可以在电脑上显示Android设备的画面&#xff0c;并支持使用鼠标进行交互。 目录 1. 下载安装2. scrcpy的高级…

【Vue3+Ts+Vite】配置滚动条样式

一、先看效果 二、直接上代码 <template><div class"main-container"><h1 v-for"index in 50" :key"index">这是home页面</h1></div> </template> <style lang"scss" scoped> .main-conta…

Failed to load local font resource:微信小程序加载第三方字体

加载本地字体.ttf 将ttf转换为base64格式&#xff1a;https://transfonter.org/ 步骤如下 将下载后的stylesheet.css 里的font-family属性名字改一下&#xff0c;然后引进页面里就行了&#xff0c;全局样式就放app.scss&#xff0c;单页面就引入单页面 注&#xff1a; .title…

目标检测之3维合成

现在有一系列的图片&#xff0c;图片之间可以按照z轴方向进行排列。图片经过了目标检测&#xff0c;输出了一系列的检测框&#xff0c;现在的需求是将检测框按类别进行合成&#xff0c;以在3维上生成检测结果。 思路&#xff1a;将图片按照z轴方向排列&#xff0c;以z轴索引作…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…

掌握无人机遥感数据预处理的全链条理论与实践流程、典型农林植被性状的估算理论与实践方法、利用MATLAB进行编程实践(脚本与GUI开发)以及期刊论文插图制作等

目录 专题一 认识主被动无人机遥感数据 专题二 预处理无人机遥感数据 专题三 定量估算农林植被关键性状 专题四 期刊论文插图精细制作与Appdesigner应用开发 近地面无人机植被定量遥感与生理参数反演 更多推荐 遥感技术作为一种空间大数据手段&#xff0c;能够从多时、多…

使用wxPython和pillow开发拼图小游戏(四)

上一篇介绍了使用本地图片来初始化游戏的方法&#xff0c;通过前边三篇&#xff0c;该小游戏的主要内容差不多介绍完了&#xff0c;最后这一篇来介绍下游戏用时的计算、重置游戏和关闭窗口事件处理 游戏用时的计算 对于游戏用时的记录&#xff0c;看过前几篇的小伙伴可能也发现…

Flutter:flutter_local_notifications——消息推送的学习

前言 注&#xff1a; 刚开始学习&#xff0c;如果某些案例使用时遇到问题&#xff0c;可以自行百度、查看官方案例、官方github。 简介 Flutter Local Notifications是一个用于在Flutter应用程序中显示本地通知的插件。它提供了一个简单而强大的方法来在设备上发送通知&#…

flask 点赞系统

dianzan.html页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>点赞系统</title> </head> <body><h2>这是一个点赞系统</h2><table border"1"><…

数据分析-关于指标和指标体系

一、电商指标体系 二、指标体系的作用 三、统计学中基本的分析手段

Python+OpenCV实现自动扫雷,挑战扫雷世界记录!

目录 准备 - 扫雷软件 实现思路 - 01 窗体截取 - 02 雷块分割 - 03 雷块识别 - 04 扫雷算法实现 福利&#xff1a;文末有Python全套资料哦 我们一起来玩扫雷吧。用PythonOpenCV实现了自动扫雷&#xff0c;突破世界记录&#xff0c;我们先来看一下效果吧。 中级 - 0.74秒 …

HC32F448-小华MCU

由于要开发和学习使用低成本MCU&#xff0c;这里记录下小华半导体HC32F448的手册参数 芯片官网&#xff08;HC32F448MCTI-LQFP80&#xff09; 小华半导体有限公司 (xhsc.com.cn) HC32F448 系列MCU是32位的ARM Cortex-M4微控制器。最高工作频率 200MHz&#xff0c;最大 256KB 的…

css3的filter图片滤镜使用

业务介绍 默认&#xff1a;第一个图标为选中状态&#xff0c;其他三个图标事未选中状态 样式&#xff1a;选中状态是深蓝&#xff0c;未选中状体是浅蓝 交互&#xff1a;鼠标放上去选中&#xff0c;其他未选中&#xff0c;鼠标离开时候保持当前选中状态 实现&#xff1a;目前…

2023级学姐上岸浙江大学MBA的备考经验分享

在分享我的浙大MBA提面经验之前&#xff0c;先给大家炫一波前段时间刚收到的浙大录取通知书。还有一个月的时间我就要去梦想中的殿堂学习了&#xff0c;而针对今年报考浙大的考生来说&#xff0c;杭州这边还有最后两次可以参加提面的机会&#xff0c;我们去年这届共招收新生526…

kettle 学习笔记

kettle 学习笔记 个人理解下载 / 安装kettle及测试环境准备kattle下载安装JDK安装配置MySQL安装配置 使用练习创建数据库连接转换练习 个人理解 ETL工具的一种&#xff0c;作用是将数据进行抽取&#xff0c;转换&#xff0c;应该是数据中心类型的项目用的比较多&#xff0c;将…