Python 之 numpy.unique函数的介绍以及使用

文章目录

介绍

np.unique 是 NumPy 库中的一个函数,用于从数组中获取唯一的值,并且可以返回这些唯一值的一些相关信息。以下是对 np.unique 函数的详细介绍:

语法:

python 复制代码
unique_values = np.unique(arr, return_index=False, return_inverse=False, return_counts=False, axis=None)
  • arr:要从中提取唯一值的输入数组。
  • return_index:可选参数,如果设置为 True,则返回一个索引数组,其中包含唯一值在输入数组中的第一次出现的索引。默认为 False
  • return_inverse:可选参数,如果设置为 True,则返回一个整数数组,其中包含原始数组中的每个元素在唯一值数组中的索引。这可以用于将唯一值的数组还原回原始数组。默认为 False
  • return_counts:可选参数,如果设置为 True,则返回一个整数数组,其中包含每个唯一值在输入数组中出现的次数。默认为 False
  • axis:可选参数,用于指定在哪个轴上查找唯一值。如果未指定,则默认为 None,表示在整个数组中查找唯一值。

返回值:

np.unique 函数返回一个包含唯一值的 NumPy 数组。根据设置的参数,它可能还返回一个或多个附加的数组,如索引数组、逆向索引数组和出现次数数组。

示例:

python 复制代码
import numpy as np

arr = np.array([3, 1, 2, 2, 3, 1, 4, 5, 5])

# 获取唯一值数组
unique_values = np.unique(arr)
# 输出: array([1, 2, 3, 4, 5])

# 获取唯一值的索引数组
unique_indices = np.unique(arr, return_index=True)[1]
# 输出: array([1, 2, 0, 6, 7], dtype=int64)

# 获取逆向索引数组,用于还原原始数组
inverse_indices = np.unique(arr, return_inverse=True)[1]
# 输出: array([2, 0, 1, 1, 2, 0, 3, 4, 4], dtype=int64)

# 获取唯一值的出现次数数组
value_counts = np.unique(arr, return_counts=True)[1]
# 输出: array([2, 2, 2, 1, 2], dtype=int64)

在上述示例中,np.unique 函数用于获取唯一值,并可以选择性地返回索引、逆向索引和出现次数,这些信息可以用于各种数据处理和分析任务中。

补充[1]

代码 value_counts = np.unique(arr, return_counts=True)[1] 的目的是计算一个数组 arr 中每个唯一值的出现次数,并将结果存储在名为 value_counts 的变量中。

让我解释这段代码的每个部分:

  1. np.unique(arr, return_counts=True):这部分调用了 NumPy 的 np.unique 函数,并传递了参数 return_counts=True。这意味着函数会返回一个包含唯一值的数组以及一个包含每个唯一值出现次数的数组。

  2. [1]:这部分是从函数返回的结果中提取出了第二个元素。在 Python 中,列表和数组的索引从0开始,所以 [1] 表示获取结果中的第二个元素,即包含出现次数的数组。

所以,最终结果 value_counts 是一个包含了数组 arr 中每个唯一值的出现次数的 NumPy 数组。例如,如果 arr[3, 1, 2, 2, 3, 1, 4, 5, 5],那么 value_counts 可能会是 [2, 2, 2, 1, 2],表示数字 1 出现了2次,数字 2 出现了2次,数字 3 出现了2次,数字 4 出现了1次,数字 5 出现了2次。这个信息对于统计和分析数据中的值的频率非常有用。

相关推荐
B站_计算机毕业设计之家8 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏15 分钟前
Langchain实战快速入门
人工智能·python·langchain
3GPP仿真实验室17 分钟前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
devmoon21 分钟前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
lili-felicity21 分钟前
CANN流水线并行推理与资源调度优化
开发语言·人工智能
沐知全栈开发22 分钟前
CSS3 边框:全面解析与实战技巧
开发语言
lili-felicity24 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道27 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
island131432 分钟前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
曹牧36 分钟前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言