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)

练习

  1. 使用 randint 方法生成一个包含 20 个介于 100 到 200 之间的随机整数的数组。
  2. 使用 rand 方法生成一个包含 15 个介于 0 和 1 之间的随机浮点数的数组。
  3. 从数组 [1, 3, 5, 7, 9] 中随机选择 10 个元素,并允许重复。
  4. 生成 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 数组排序、过滤与随机数生成详解的更多相关文章

  1. PHP数组排序函数array_multisort()函数详解

    这个函数因为用到了,并且在网上找了半天终于找到了一个写的通俗易懂的文章,在这里分享给大家. 原文链接:http://blog.163.com/lgh_2002/blog/static/44017526 ...

  2. Wireshark基本用法 && 过滤规则 && 协议详解

    基本使用: https://www.cnblogs.com/dragonir/p/6219541.html 协议解析: https://www.jianshu.com/p/a384b8e32b67 ( ...

  3. PHP数组排序函数array_multisort()函数详解(二)

    array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...

  4. numpy函数:[6]arange()详解

    arange函数用于创建等差数组,使用频率非常高,arange非常类似range函数,会python的人肯定经常用range函数,比如在for循环中,几乎都用到了range,下面我们通过range来学 ...

  5. numpy 介绍和基础使用详解

    NUMPY INTRODUCTION NUMPY 提供了一个在Python中做科学计算的基础库,重在数值计算,主要用于处理多维数组,用于储存和处理大型矩阵,本身是由C语言开发,比python自身的列表 ...

  6. HBase Filter 过滤器之RowFilter详解

    前言:本文详细介绍了HBase RowFilter过滤器Java&Shell API的使用,并贴出了相关示例代码以供参考.RowFilter 基于行键进行过滤,在工作中涉及到需要通过HBase ...

  7. HBase Filter 过滤器之FamilyFilter详解

    前言:本文详细介绍了 HBase FamilyFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.FamilyFilter 基于列族进行过滤,在工作中涉及 ...

  8. HBase Filter 过滤器之QualifierFilter详解

    前言:本文详细介绍了 HBase QualifierFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.QualifierFilter 基于列名进行过滤, ...

  9. HBase Filter 过滤器之 ValueFilter 详解

    前言:本文详细介绍了 HBase ValueFilter 过滤器 Java&Shell API 的使用,并贴出了相关示例代码以供参考.ValueFilter 基于列值进行过滤,在工作中涉及到需 ...

  10. NumPy之:结构化数组详解

    目录 简介 结构化数组中的字段field 结构化数据类型 创建结构化数据类型 从元组创建 从逗号分割的dtype创建 从字典创建 操作结构化数据类型 Offsets 和Alignment Field ...

随机推荐

  1. Python 注释:解释和优化代码可读性

    注释可以用来解释Python代码.注释可以用来使代码更易读.注释可以用来在测试代码时防止执行. 创建注释 注释以#开始,Python会忽略它们: 示例:获取您自己的Python注释 # 这是一个注释 ...

  2. configparser封装后报错:configparser.NoSectionError: No section: 'LoginElement'

    前言 这是目录结构 先贴一下源代码 # read_ini.pyimport configparser class ReadIni(): """读取 ini.ini 配置文 ...

  3. jemter返回结果中文乱码

    如图,返回的结果,中文出现乱码 对于这个问题有两种解决方法 第一种:修改jemeter文件,需要重启jemter 在 bin 目录下,找到  jmeter.properties  这个文件,修改编码格 ...

  4. 机器学习常见的sampling策略 附PyTorch实现

    简单的采样策略 首先介绍三种简单采样策略: Instance-balanced sampling, 实例平衡采样. Class-balanced sampling, 类平衡采样. Square-roo ...

  5. 为什么使用gs_probackup执行全量备份时,提示无法连接到数据库?

    为什么使用 gs_probackup 执行全量备份时,提示无法连接到数据库? 背景介绍: 在使用 gs_probackup 执行全量备份时,提示无法连接到数据库. 报错内容: [ommdoc@host ...

  6. 【直播预告】HarmonyOS 极客松赋能直播第六期:产品创新从哪里来?

  7. CentOS升级内核-- CentOS9 Stream/CentOS8 Stream/CentOS7

    官方文档在此 升级原因 当我们安装一些软件(对,我说的就是Kubernetes),可能需要新内核的支持,而CentOS又比较保守,不太升级,所以需要我们手工升级. # 看下目前是什么版本内核 unam ...

  8. 用fpga实现1G Eth TCP&UDP硬件协议栈

    用fpga实现的1G 以太网硬件协议栈,属于轻的协议栈

  9. json文件读取并转换成为字典python

    # JSON到字典转化 f2 = open('info.json', 'r') info_data = json.load(f2) print(info_data) # 显示数据类型 print(ty ...

  10. Python数据分析 Series 笔记

    002,pandas介绍 003,Series创建 导入Pandas Series 是一种类似于一维数组的对象,由下面两个部分组成: values:一组数据(ndarray类型) index:相关的数 ...