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
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注