NumPy 数组切片及数据类型介绍

NumPy 数组切片

NumPy 数组切片用于从数组中提取子集。它类似于 Python 中的列表切片,但支持多维数组。

一维数组切片

要从一维数组中提取子集,可以使用方括号 [] 并指定切片。切片由起始索引、结束索引和可选步长组成,用冒号 : 分隔。

语法:

python">arr[start:end:step]
  • start:起始索引(默认为 0)。
  • end:结束索引(不包括)。
  • step:步长(默认为 1)。

示例:

python">import numpy as np# 创建一维数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 从第二个元素到第五个元素(不包括)
print(arr[1:5])  # 输出:array([2, 3, 4])# 从头到尾,每隔一个元素
print(arr[::2])  # 输出:array([1, 3, 5, 7, 9])# 从倒数第三个元素到倒数第一个元素
print(arr[-3:-1])  # 输出:array([8, 9])

二维数组切片

要从二维数组中提取子集,可以使用逗号分隔的两个索引,每个索引表示相应维度的切片。

语法:

python">arr[start_row:end_row, start_col:end_col:step]
  • start_row:起始行索引(默认为 0)。
  • end_row:结束行索引(不包括)。
  • start_col:起始列索引(默认为 0)。
  • end_col:结束列索引(不包括)。
  • step:步长(默认为 1)。

示例:

python">import numpy as np# 创建二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 从第二行到第三行,第一列到第三列(不包括)
print(arr[1:3, 0:3])  # 输出:array([[4, 5, 6], [7, 8, 9]])# 从第一行到第三行,每隔一列
print(arr[::2, :])  # 输出:array([[1, 3, 5], [7, 9]])# 从第一行到第三行,第二列
print(arr[:, 1])  # 输出:array([2, 5, 8])

练习

创建一个 5x5 的二维数组 arr,并打印以下子集:

  • 第一行的所有元素
  • 第二列的所有元素
  • 从左上角到右下角的对角线元素
  • 2x2 的子数组,从第二行第三列开始

在评论中分享您的代码和输出。

Sure, here is the requested Markdown formatted content:

NumPy 数据类型

NumPy 数组由同类型元素组成,并具有指定的数据类型。数据类型定义了数组中元素的存储方式和允许的操作。

NumPy 中的数据类型

NumPy 具有比 Python 更丰富的基本数据类型,并使用首字母大写字符来表示它们:

  • i: 整数(int)
  • b: 布尔值(bool)
  • u: 无符号整数(unsigned int)
  • f: 浮点数(float)
  • c: 复数浮点数(complex float)
  • m: 时间差(timedelta)
  • M: 日期时间(datetime)
  • O: 对象(object)
  • S: 字符串(string)
  • U: Unicode 字符串(unicode string)
  • V: 可变长度字节(void)

检查数组的数据类型

NumPy 数组具有一个属性 dtype,用于获取数组元素的数据类型。

python">import numpy as nparr = np.array([1, 2, 3, 4, 5])
print(arr.dtype)

输出:

python">int32

使用指定数据类型创建数组

我们可以使用 np.array() 函数并指定 dtype 参数来创建具有指定数据类型的数组。

python">import numpy as nparr = np.array([1, 2, 3, 4, 5], dtype='float64')
print(arr)
print(arr.dtype)

输出:

python">[1. 2. 3. 4. 5.]
float64

转换数组的数据类型

我们可以使用 astype() 方法转换现有数组的数据类型。

python">import numpy as nparr = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
new_arr = arr.astype(int)
print(new_arr)
print(new_arr.dtype)

输出:

python">[1 2 3 4 5]
int32

NumPy 数据类型简表

数据类型字符描述
整数i有符号整数
布尔值bTrue 或 False
无符号整数u无符号整数
浮点数f固定长度浮点数
复数浮点数c复数浮点数
时间差m时间间隔
日期时间M日期和时间
对象OPython 对象
字符串S固定长度字符串
Unicode 字符串U可变长度 Unicode 字符串
可变长度字节V用于其他类型的固定内存块

练习

创建以下 NumPy 数组,并打印它们的元素和数据类型:

  • 一个包含 10 个随机整数的数组。
  • 一个包含 5 个布尔值的数组。
  • 一个包含 7 个复杂数的数组。
  • 一个包含 10 个日期时间对象的数组。

在评论中分享您的代码和输出。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注


http://www.ppmy.cn/news/1457188.html

相关文章

合并两个有序数组(详解)

合并两个有序数组(详解) 合并两个有序数组 题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,…

【SSM进阶学习系列丨分页篇】PageHelper 分页插件集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页,使用的是PageHelper分页插件,版本使用的是5.1.8 。 ​ 参考文档…

k8s 资源文件参数介绍

Kubernetes资源文件yaml参数介绍 yaml 介绍 yaml 是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点例如 SpringBoot 的配置文件 application.yml 也是一个 yaml 格式的文件 语法格式 通过缩进表示层级关系不能使用tab进行缩进&am…

服务器感染了.rmallox勒索病毒,如何确保数据文件完整恢复?

尊敬的读者: 在数字化时代,网络安全领域正经历着前所未有的挑战。其中,.rmallox勒索病毒作为一种新兴的网络威胁,以其独特的攻击方式和狡猾的传播策略,给企业和个人用户带来了极大的困扰。本文将揭示.rmallox勒索病毒…

硬件设计细节1-缓冲驱动器使用注意事项

目录 一、缓冲驱动器二、实例分析1.硬件结构2.问题描述3.原因分析4.原因定位 三、结论 一、缓冲驱动器 缓冲驱动器通常用于隔离、电平转换等应用场景。在使用时,需要关注的点较多,如电平范围、频率范围、延时、控制方式、方向以及输入输出状态。通常&am…

第六代移动通信介绍、无线网络类型、白皮书

关于6G 即第六代移动通信的介绍, 图解通信原理与案例分析-30:6G-天地互联、陆海空一体、全空间覆盖的超宽带移动通信系统_6g原理-CSDN博客文章浏览阅读1.7w次,点赞34次,收藏165次。6G 即第六代移动通信,6G 将在5G 的基…

技术速递|使用 .NET 为 Microsoft AI 构建可扩展网关

作者:Kara Saucerman 排版:Alan Wang Microsoft AI 团队构建了全面的内容、服务、平台和技术,以便消费者在任何设备上、任何地方获取他们想要的信息,并为企业改善客户和员工的体验。我们的团队支持多种体验,包括 Bing、…

ECC 号码总结

1、问题背景 在手机开发过程中,经常遇见各种紧急号码问题,在此特意总结下紧急号码相关知识。 2、紧急号码来源 在MTK RILD EccNumberSource.h中,定义了如下几种紧急号码来源。 按优先级排序介绍如下 2.1、SOURCE_NETWORK 网络下发&#xff…

C数据结构:链表高级篇

单链表的定义 由于顺序表的插入删除操作需要移动大量的元素,影响了运行效率,因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相…

DeepSeek发布全新开源大模型,GPT-4级别能力 价格仅百分之一

最新国产开源MoE大模型,刚刚亮相就火了。 DeepSeek-V2性能达GPT-4级别,但开源、可免费商用、API价格仅为GPT-4-Turbo的百分之一。 因此一经发布,立马引发不小讨论。 从公布的性能指标来看,DeepSeek-V2的中文综合能力超越一众开源…

️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?

前言 可乐他们团队最近在做一个文章社区平台,由于人手不够,后端部分也是由前端同学来实现,使用的是 nest 。 今天他接到了一个需求,就是在用户点开文章详情的时候,把阅读量 +1 ,这里不需要判断用户是否阅读过,无脑 +1 就行。 它心想:这么简单,这不是跟 1+1 一样么。…

谈谈TCP Socket中写数据的函数---write、send 、sendv

write函数 将数据写入到 TCP 连接中。原型:ssize_t write(int sockfd, const void *buf, size_t count); -sockfd:TCP Socket 描述符。 -buf:要发送的数据缓冲区。 -count:要发送的字节数。 -返回值:成功时返回实际发…

QT+多线程编程

QT的多线程编程有两种 1、自定义类继承QThread 第一种是自定义一个类继承于QThread,重写run()方法来实现。然后当需要使用线程的时候你就新建一个自定义对象,然后调用start方法开始运行。 下面的例子是widget里面创建一个线程,然后调用sta…

Redis - Zset 有序集合

目录 前言 列表、集合、有序集合三者的异同点 命令 ZADD 添加或者更新指定的元素以及关联的分数 ZRANGE 返回指定区间里的元素(分数按照升序) ZREVRANGE 返回指定区间里的元素(分数按照降序) ZRANGEBYSCORE 返回在指定分数范…

error: pathspec ‘XXX‘ did not match any file(s) known to git

使用vscode,在本地开发切换分支时,报以下错误: error: pathspec XXX did not match any file(s) known to git 该问题是由于没有对应分支的原因。 首先使用一下命令,查看本地及远程的所有分支。 git branch -a 若没有对应的分…

Git 进行项目开发时新建一个分支作为备份

在使用 Git 进行项目开发时,想要在当前的 master 或其它分支基础上进行代码优化或修改时,并且在优化过程中保留一个当前状态的备份(即新建一个分支作为备份),然后继续在 master 分支上开发,你可以按照以下步…

【陀螺仪JY61P维特智能】通过单片机修改波特率和角度参考的方法

根据官方文档: 修改波特率 1.解锁:FF AA 69 88 B5 1.1延时200ms 2.修改波特率:FF AA 04 06 00 2.1切换已修改的波特率然后重新发送解锁和保存指令 2.2解锁:FF AA 69 88 B5 2.3延时200ms 4.保存: FF AA 00 00 00 XY轴角度参考 角度参考是以传感器当前的实际位置&…

解决VScode -正在本地下载 VS Code 服务器

不知道怎么回事再次连接服务器的时候一直卡在这里了,查看输出信息发现一直卡在下载处,报错信息如图1,输出信息如图2。 1.报错信息 图1 报错信息 图2 输出信息 2.尝试 【已解决】设置SSH主机:VS Code-正在本地下载 VS Code 服务器…

【Three.js基础学习】15.scroll-based-animation

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 课程要点 结合html等场景 做滚动动画 1.遇到的问题, 在向下滚动时,下方会显白(部分浏览器) 解决:alpha:true …

爬虫学习(4)每日一笑

代码 import requests import re import osif __name__ "__main__":if not os.path.exists("./haha"):os.makedirs(./haha)url https://mlol.qt.qq.com/go/mlol_news/varcache_article?docid6321992422382570537&gameid3&zoneplat&webview…