NumPy 数组排序、过滤与随机数生成详解
NumPy 数组排序
排序数组
排序数组意味着将元素按特定顺序排列。顺序可以是数字大小、字母顺序、升序或降序等。
NumPy 的 ndarray 对象提供了一个名为 sort() 的函数,用于对数组进行排序。
示例:
import numpy as np
arr = np.array([3, 2, 0, 1])
print(np.sort(arr))
输出:
[0 1 2 3]
注意:
sort() 方法会返回数组的副本,原始数组不会被修改。
可以对字符串数组、布尔数组等其他数据类型进行排序。
排序二维数组
对于二维数组,sort() 方法会对每一行进行排序。
示例:
import numpy as np
arr = np.array([[3, 2, 4], [5, 0, 1]])
print(np.sort(arr))
输出:
[[0 1 2]
[3 4 5]]
练习
使用 NumPy 正确的方法对以下数组进行排序:
arr = np.array([3, 2, 0, 1])
x = np.sort(
# 请在此处填写代码
)
print(x)
解答:
x = np.sort(arr)
NumPy 数组过滤
过滤数组
过滤数组是指从现有数组中选取部分元素,并创建新的数组。
在 NumPy 中,可以使用布尔索引列表来过滤数组。布尔索引列表是一个与数组索引相对应的布尔值列表。
如果索引处的值为 True,则该元素会被包含在过滤后的数组中;如果为 False,则会被排除。
示例:
import numpy as np
arr = np.array([41, 42, 43, 44])
x = [True, False, True, False]
newarr = arr[x]
print(newarr)
输出:
[41 43]
解释:
新数组 newarr 只包含 arr 中索引为 0 和 2 的元素,因为 x 对应索引处的值为 True。
创建过滤数组
通常情况下,我们需要根据条件来创建过滤数组。
示例:
仅返回大于 42 的元素:
import numpy as np
arr = np.array([41, 42, 43, 44])
filter_arr = arr > 42
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
输出:
[False True True True]
[43 44]
仅返回偶数元素:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
filter_arr = arr % 2 == 0
newarr = arr[filter_arr]
print(filter_arr)
print(newarr)
输出:
[False True False True False True False]
[2 4 6]
直接从数组创建过滤
NumPy 提供了一种更简洁的方式来创建过滤数组,即直接在条件中使用数组:
示例:
仅返回大于 42 的元素:
import numpy as np
arr = np.array([41, 42, 43, 44])
newarr = arr[arr > 42]
print(newarr)
输出:
[43 44]
仅返回偶数元素:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7])
newarr = arr[arr % 2 == 0]
print(newarr)
输出:
[2 4 6]
练习
使用 NumPy 的直接过滤方法,从以下数组中过滤出所有平方为偶数的元素:
import numpy as np
arr = np.
NumPy 中的随机数
什么是随机数?
随机数是指无法通过确定性方法预测其值的数据。通常情况下,随机数是指在一定范围内均匀分布的数字。
在计算机中,由于程序的确定性,不可能生成真正的随机数。因此,通常使用伪随机数来代替随机数。伪随机数是通过算法生成的,但看起来像随机数。
NumPy 中的随机数生成
NumPy 提供了 random 模块用于生成随机数。该模块提供了多种方法,可以生成不同类型和分布的随机数。
生成随机整数
randint(low, high, size):生成指定范围内的随机整数。
low:下限,默认为 0。
high:上限,不包括上限本身。
size:输出数组的形状。
示例:
import numpy as np
# 生成 10 个介于 0 和 100 之间的随机整数
x = np.random.randint(0, 101, size=10)
print(x)
生成随机浮点数
rand(size):生成介于 0 和 1 之间的随机浮点数。
size:输出数组的形状。
示例:
import numpy as np
# 生成 5 个随机浮点数
x = np.random.rand(5)
print(x)
从数组中生成随机数
choice(a, size, replace):从数组 a 中随机选择元素。
a:源数组。
size:输出数组的形状。
replace:是否允许重复选择元素,默认为 False。
示例:
import numpy as np
# 从数组 [1, 2, 3, 4, 5] 中随机选择 3 个元素
x = np.random.choice([1, 2, 3, 4, 5], size=3)
print(x)
生成指定分布的随机数
NumPy 还提供了其他方法来生成特定分布的随机数,例如正态分布、均匀分布、指数分布等。
randn(size):生成服从标准正态分布的随机数。
randm(size):生成服从均匀分布的随机整数。
beta(a, b, size):生成服从 Beta 分布的随机数。
gamma(shape, scale, size):生成服从 Gamma 分布的随机数。
poisson(lam, size):生成服从泊松分布的随机整数。
例如,生成 10 个服从标准正态分布的随机数:
import numpy as np
x = np.random.randn(10)
print(x)
练习
- 使用
randint方法生成一个包含 20 个介于 100 到 200 之间的随机整数的数组。 - 使用
rand方法生成一个包含 15 个介于 0 和 1 之间的随机浮点数的数组。 - 从数组
[1, 3, 5, 7, 9]中随机选择 10 个元素,并允许重复。 - 生成 5 个服从标准正态分布的随机数。
解决方案
import numpy as np
# 1. 使用 randint 方法生成随机整数数组
random_ints = np.random.randint(100, 201, size=20)
print(random_ints)
# 2. 使用 rand 方法生成随机浮点数数组
random_floats = np.random.rand(15)
print(random_floats)
# 3. 从数组中随机选择元素
random_elements = np.random.choice([1, 3, 5, 7, 9], size=10, replace=True)
print(random_elements)
# 4. 生成服从标准正态分布的随机数
normal_randoms = np.random.randn(5)
print(normal_randoms)
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
NumPy 数组排序、过滤与随机数生成详解的更多相关文章
- PHP数组排序函数array_multisort()函数详解
这个函数因为用到了,并且在网上找了半天终于找到了一个写的通俗易懂的文章,在这里分享给大家. 原文链接:http://blog.163.com/lgh_2002/blog/static/44017526 ...
- Wireshark基本用法 && 过滤规则 && 协议详解
基本使用: https://www.cnblogs.com/dragonir/p/6219541.html 协议解析: https://www.jianshu.com/p/a384b8e32b67 ( ...
- PHP数组排序函数array_multisort()函数详解(二)
array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...
- numpy函数:[6]arange()详解
arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,下面我们通过range来学 ...
- numpy 介绍和基础使用详解
NUMPY INTRODUCTION NUMPY 提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组,用于储存和处理大型矩阵,本身是由C语言开发,比python自身的列表 ...
- HBase Filter 过滤器之RowFilter详解
前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...
- HBase Filter 过滤器之FamilyFilter详解
前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.FamilyFilter 基于列族进行过滤,在工作中涉及 ...
- HBase Filter 过滤器之QualifierFilter详解
前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...
- HBase Filter 过滤器之 ValueFilter 详解
前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...
- NumPy之:结构化数组详解
目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...
随机推荐
- C 语言函数完全指南:创建、调用、参数传递、返回值解析
C 语言中的函数 函数是一段代码块,只有在被调用时才会运行. 您可以将数据(称为参数)传递给函数. 函数用于执行某些操作,它们对于重用代码很重要:定义一次代码,并多次使用. 预定义函数 事实证明,您已 ...
- C++调用Python-0:搭建环境
1.进入到Python安装目录 2.将Python安装目录中的 include 和 libs 文件夹放在 C++项目中 3.设置 附加包含目录 和 附加库目录.附加依赖项(python310_d.li ...
- centos-stream-9 centos9 配置国内yum源 阿里云源
源配置 tips: yum配置文件路径 /etc/yum.repos.d/centos.repo 1.备份源配置 [Very Important!] mv /etc/yum.repos.d/cento ...
- CentOS 6.5编译安装httpd-2.4.7
CentOS 6.5编译安装httpd-2.4.7 CentOS 编译安装 Apache 2.4 准备: [root@NFSServer ~]# yum groupinstall "Deve ...
- UML 哲学之道——概况篇[二]
前言 简单介绍一下uml的概况篇. 正文 UML 概述: url 包括: 事物 关系 图 扩展机制 事物: 结构: 类.接口.构件.节点等等 行为:交互.状态等等 分组:包.子系统等等 注释:注释 关 ...
- Effective Python:简介
作者:布雷特·斯拉特金 本书的大部分范例代码都遵循Python 3.7版本的语法规范,Python 3.7发布于2018年6月.另外,书里还会给出一些采用Python 3.8语法规范所写的范例,让大家 ...
- Oracle 查询超级慢之buffer sort
查询超级慢之buffer sort 在视图中增加了一个临时表作为一个数据源进行id和名称的转换,没加的时候一秒不到,加了以后14秒,感觉有点问题,于是打开了解释计划看了下,发现这个buffer sor ...
- 牛客网-SQL专项训练17
①SQL查询中使用WHere子句指出的是:查询条件 ②Mysql中表student_table(id,name,birth,sex),查询重复姓名.重复次数,并按重复次数降序排列,正确的是(A)? 解 ...
- 第 1 章 Python 爬虫概念与 Web 基础
第 1 章 Python 爬虫概念与 Web 基础 1.1 爬虫概念 1.1.1 什么是爬虫 爬虫,即网络爬虫,又称网络蜘蛛(Web Spider),是一种按照一定规则,用来自动浏览或抓取万维网数据的 ...
- ATC'22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时 | 龙蜥技术
简介: RunD可以在88毫秒内启动,并且在104核384GB内存的单节点上每秒启动超过200个安全容器. 编者按:目前的安全容器软件栈 - 包括 host 操作系统中的 cgroup.guest 操 ...