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

news2024/11/17 13:40:38

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 = 3

a = 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.coloradmin.cn/o/809887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HCIP OSPF远离骨干非骨干区域-使用虚链路解决

虚链路 虚链路是OSPF针对不规则区域提出的一种解决方案&#xff0c;也被称为虚连接。 虚链路可以在任意两个ABR上建立&#xff0c;但是要求这两个ABR都有端口连接到一个相同的非骨干区域。 注&#xff1a;虚链路的建立是双向的&#xff0c;虚链路永远属于骨干区域&#xff0…

【学习笔记】关于图像YUV格式分类和排布方式的全学习

这里是尼德兰的喵学习笔记相关文章&#xff0c;欢迎您的访问&#xff01; 如果文章对您有所帮助&#xff0c;期待您的点赞收藏 让我们一起为芯片前端全栈工程师而努力 目录 前言 YUV格式导图 YUV444 packed planar I444 YV24 semi-planar NV24 NV42 YUV422 packed …

pytorch(6)——神经网络基本骨架nn.module的使用

1 神经网络框架 1.1 Module类的使用 NN (Neural network): 神经网络 Containers: 容器 Convolution Layers: 卷积层 Pooling layers: 池化层 Padding Layers: 填充层 Non-linear Activations (weighted sum, nonlinearity): 非线性激活 Non-linear Activations (other): 非线…

mpi4py包安装报错

报错情况 #include <mpi.h>^~~~~~~compilation terminated.failure.removing: _configtest.c _configtest.oerror: Cannot compile MPI programs. Check your configuration!!![end of output]note: This error originates from a subprocess, and is likely not a probl…

设备取电芯片LDR6328Q

2021年5月&#xff0c;USB-IF 协会发布了全新的USB PD3.1规范&#xff0c;该规范将快充功率上限从100 W提升至240W&#xff08;支持Extended Power Range&#xff0c;简称EPR&#xff09;。充电功率的提升也让USB PD的应用从手机、笔记本电脑&#xff0c;扩展到便携式设备、物联…

Flowable-中间事件-消息中间抛出事件

定义 消息中间事件指在流程中将一个消息事件作为独立的节点来运行。它是一种抛出事件&#xff0c;当流程 执行到消息中间事件时就会中断在这里&#xff0c;一直等待被触发&#xff0c;直接到该事件接收到相应的消息后&#xff0c;流 程沿后继路线继续执行。消息事件是一种引用…

页面访问控制远程仓库

页面访问权限控制 什么是jwt身份认证 在前后端分离模式的开发中&#xff0c;服务器如何知道来访者的身份呢&#xff1f; 在登录后&#xff0c;服务器会响应给用户一个 令牌 &#xff08;token&#xff09;令牌中会包括该用户的id等唯一标识浏览器收到令牌后&#xff0c;自己…

数据结构入门指南:链表(新手避坑指南)

目录 前言 1.链表 1.1链表的概念 1.2链表的分类 1.2.1单向或双向 1.2.2.带头或者不带头 1.2.33. 循环或者非循环 1.3链表的实现 定义链表 总结 前言 前边我们学习了顺序表&#xff0c;顺序表是数据结构中最简单的一种线性数据结构&#xff0c;今天我们来学习链表&#x…

数据结构: 线性表(顺序表实现)

文章目录 1. 线性表的定义2. 线性表的顺序表示:顺序表2.1 概念及结构2.2 接口实现2.2.1 顺序表初始化 (SeqListInit)2.2.2 顺序表尾插 (SeqListPushBack)2.2.3 顺序表打印 (SeqListPrint)2.2.6 顺序表销毁 (SeqListDestroy)2.2.5 顺序表尾删 (SeqListPopBack)2.2.6 顺序表头插 …

vue中各种混淆用法汇总

✨在生成、导出、导入、使用 Vue 组件的时候&#xff0c;像我这种新手就会常常被位于不同文件的 new Vue() 、 export default{} 搞得晕头转向。本文对常见用法汇总区分 new Vue() &#x1f4a6;Vue()就是一个构造函数&#xff0c;new Vue()是创建一个 vue 实例。该实例是一个…

UE5 与 C++ 入门教程·第二课:动画重定向

虚幻中的角色动画都是基于 骨骼网格体 &#xff08;Skeletal Mesh&#xff09;实现&#xff0c;换言之&#xff0c;动画是跟骨骼网格体绑定的。如果有两个骨骼网格体&#xff0c;各自有一套角色动画&#xff0c;那么就可以通过重定向&#xff08;Retargeting&#xff09;将两个…

cglib动态代理、jdk动态代理及spring动态代理使用

1.项目初始化 1.1 pom.xml <dependencies><!-- spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency>&l…

6个电池均衡,buckboost电路,精度高,均衡速度快,BMS均衡

6个电池均衡&#xff0c;buckboost电路&#xff0c;精度高&#xff0c;均衡速度快&#xff0c;本人原创。 1、主体电路图如下 2、均衡电压如图 3、平均电压波动图

SpringBoot使用PropertiesLauncher加载外部jar包

启用SpringBoot的PropertiesLauncher 使用SpringBoot的PropertiesLauncher可以优先加载外部的jar文件, 这样可以在程序运行前替换jar包, 官方文档: Launching Executable Jars 使用演示 建立一个SpringBoot工程, 工程中依赖一个叫自定义的utils包, 版本是1.0.0, 通过http接口…

Java基础_网络编程

Java基础_网络编程 网络编程三要素InetAddress网络模型 UDP通信程序单播发送数据接收数据聊天室 组播广播 TCPTCP通信程序三次握手和四次挥手 来源Gitee地址 网络编程三要素 IP: 设备在网络中的地址&#xff0c;是唯一的标识端口号: 应用程序在设备中唯一的标识。协议: 数据在…

2023OpenFeign源码

原理-源码 让我们看着源~码~ 按顺序走~趟流~程~ 分为两大部分&#xff1a;启动原理、调用流程 Feign 的Java 代码才 3w 多行&#xff0c;放眼现在热门的开源项目&#xff0c; Dubbo、Naocs、Skywalking 中 Java 代码都要 30w 行起步。 重要通知&#xff01;看源码&#xff0c;…

Winform制作的用户界面在高DPI下缩放问题

引言 熟悉Winform的小伙伴应该都遇到过 在100%缩放下制作的用户界面在其他缩放百分比下会出现字体超出边框的情况&#xff0c;导致用户体验大打折扣。用户程序DPI感知是默认打开的&#xff0c;此时可以通过关闭这种感知来禁用字体的缩放&#xff0c;在这种情况下&#xff0c;用…

C语言指针详解

目录 指针是什么? 指针和指针类型 指针-整数 指针的解引用 野指针 野指针成因 如何规避野指针 指针运算 指针- 整数 指针-指针 指针的关系运算 指针和数组 二级指针 指针数组 指针数组 模拟二维数组 指针是什么? 指针理解的2个要点: 1. 指针是内存中一个…

51单片机——串行口通信

目录 1、51单片机串口通信介绍 2、串行口相关寄存器 2.1 、串行口控制寄存器SCON和PCON 2.1.1 SCON&#xff1a;串行控制寄存器 (可位寻址) 2.1.2 PCON&#xff1a;电源控制寄存器&#xff08;不可位寻址&#xff09; 2.2、串行口数据缓冲寄存器SBUF 2.3、从机地址控制…

iOS - 解压ipa包中的Assert.car文件

项目在 Archive 打包后&#xff0c;生成ipa包 将 xxx.ipa文件修改为zip后缀即 xxx.zip &#xff0c;然后再双击解压&#xff0c;会生成一个 Payload 文件夹&#xff0c;里面一个文件 如下图&#xff1a; 然后显示改文件的包内容&#xff1a; 解压 Assets.car 文件的方式&…