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

小万哥
• 阅读 326

NumPy 数组切片

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

一维数组切片

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

语法:

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

示例:

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])

二维数组切片

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

语法:

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

示例:

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,用于获取数组元素的数据类型。

import numpy as np

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

输出:

int32

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

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

import numpy as np

arr = np.array([1, 2, 3, 4, 5], dtype='float64')
print(arr)
print(arr.dtype)

输出:

[1. 2. 3. 4. 5.]
float64

转换数组的数据类型

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

import numpy as np

arr = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
new_arr = arr.astype(int)
print(new_arr)
print(new_arr.dtype)

输出:

[1 2 3 4 5]
int32

NumPy 数据类型简表

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

练习

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

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

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

最后

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

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

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

点赞
收藏
评论区
推荐文章
九路 九路
3年前
一篇文章彻底弄懂理解和高效运用切片(slice)
slice,中文多译为“切片”,是Go语言在数组之上提供的一个重要的抽象数据类型。在Go语言中,绝大多数需要使用数组的场合,切片都实现了完美替代。并且和数组相比,切片提供了更通用、功能更强大且便捷的数据序列访问接口。1.切片究竟是什么在对切片一探究竟之前,我们先来简略了解一下Go语言中的数组。Go语言数组是一个固定长度的、容纳同构类型元素的
Easter79 Easter79
3年前
str的用法
  字符串的索引切片以及常用的操作方法都是形成新的字符串,和原字符串没有关系 切片和索引\按照索引取值按照切片取值,顾头不顾尾,切片加步长 只要倒叙取值就要加上反向步长capitalize() 首字母大写\center() 将字符串居中可以添加填充物\swapcase() 大小写反转
go语言中,数组与切片的区别?
切片是Go语言核心的数据结构,然而刚接触Go的程序员经常在切片的工作方式和行为表现上被绊倒。比如,明明说切片是引用类型但在函数内对其做的更改有时候却保留不下来,有时候却可以。究其原因是因为我们很多人用其他语言的思维来尝试猜测Go语言中切片的行为,切片这个内置类型在Go语言底层有其单独的类型定义,而不是我们通常理解的其他语言中数组的概念。文章
Wesley13 Wesley13
3年前
Go切片的开闭原则
Go切片的开闭原则前言今日在工作中踩了一个小坑,关于数组切片的,主要是切片开闭原则的,当年面试的时候考过,但是后来没有仔细研究,这里补足一下。示例packagemainimport"fmt"funcmain(){//程序运行完成时一定要有输
Stella981 Stella981
3年前
Python —— 函数高级特性(切片、迭代、列表生成式、生成器、迭代器)
一、切片(Slice)    在很多编程语言中,针对字符串提供了很多截取函数(i.e. substring),目的就是对字符串切片。python中没有针对字符串的截取函数,需要通过“切片”来完成。  取一个list或tuple的部分元素可以用切片   格式: 假定list或tuple组成的元素组
Wesley13 Wesley13
3年前
Go 定长的数组
1.Go语言数组的简介  几乎所有的计算机语言都有数组,应用非常的广泛。同样,在Go语言中也有数组并且在数组的基础上还衍生出了切片(slice)。数组是一系列同一类型数据的集合,数组中包含的每个数据被称为数组元素,一个数组包含的元素个数被称为数组的长度,这是数组的基本定义。  在Go语言中数组是一个值类型(ValueType)
Stella981 Stella981
3年前
Django ORM 高性能查询优化
一、QuerySet可切片使用Python的切片语法来限制查询集记录的数目。它等同于SQL的LIMIT和OFFSET子句。Entry.objects.all():5(LIMIT5)Entry.objects.all()5:10(
小万哥 小万哥
1年前
Python 数组和列表:创建、访问、添加和删除数组元素
Python没有内置支持数组,但可以使用Python列表来代替。数组本页将向您展示如何使用列表作为数组,但要在Python中使用数组,您需要导入一个库,比如NumPy库。数组用于在一个变量中存储多个值:示例,创建一个包含汽车名称的数组:Pythoncars
小万哥 小万哥
6个月前
NumPy 数组创建方法与索引访问详解
NumPy创建数组NumPy中的核心数据结构是ndarray,它代表多维数组。NumPy提供了多种方法来创建ndarray对象,包括:使用array()函数array()函数是最常用的方法之一,它可以将Python列表、元组甚至其他数组转换为ndarray
小万哥 小万哥
6个月前
NumPy 数组迭代与合并详解
NumPy数组迭代NumPy数组迭代是访问和处理数组元素的重要方法。它允许您逐个或成组地遍历数组元素。基本迭代我们可以使用Python的基本for循环来迭代NumPy数组。一维数组迭代:pythonimportnumpyasnparrnp.array(1