学会创建数组后,接下来就要学会看懂数组、提取数组数据,这是NumPy数据处理的核心操作。
本篇聚焦数组核心属性查看、索引定位、切片提取、维度修改四大高频操作,教大家精准操控数组,拿到数据不迷茫,不管是一维还是多维数组,都能轻松提取目标内容~
处理数据前,先通过数组属性了解数据结构,NumPy提供了5个核心属性,一键获取数组维度、形状、大小等信息:
ndim:数组维度数(轴数)
shape:数组形状(几行几列,返回元组)
size:数组总元素个数
dtype:数组元素数据类型
itemsize:单个元素占用字节大小
import numpy as np# 创建二维数组测试arr = np.array([[1,2,3],[4,5,6],[7,8,9]])print("数组维度:", arr.ndim)print("数组形状:", arr.shape)print("总元素个数:", arr.size)print("数据类型:", arr.dtype)

索引用于定位数组中单个元素,和Python列表索引类似,支持正索引、负索引,多维数组需用逗号分隔维度索引:
arr1 = np.array([10,20,30,40,50])print("第一个元素:", arr1[0]) # 正索引print("最后一个元素:", arr1[-1]) # 负索引
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])# 提取第1行第2列元素print(arr2[0,1])# 提取最后一行第一个元素print(arr2[-1,0])
切片用于批量提取数组片段,格式为数组[起始:结束:步长],遵循“左闭右开”原则,多维数组切片用逗号分隔各维度切片:
arr2 = np.array([[1,2,3],[4,5,6],[7,8,9]])# 提取前2行,所有列print(f"arr2[:2, :] = {arr2[:2, :]}")# 提取所有行,第2列print(f"arr2[:, 1] = {arr2[:, 1]}")# 提取中间2x2子数组print(f"arr2[1:3, 1:3] = {arr2[1:3, 1:3]}")

数据处理中常需要调整数组形状,NumPy提供便捷的重塑和转置方法,不用改动数据就能改变结构:
reshape():重塑数组形状,元素总数保持不变
T:数组转置,行和列互换
arr1 = np.arange(6)print(f"arr1 = {arr1}")# 一维数组重塑为2行3列arr_reshape = arr1.reshape(2,3)# 数组转置arr_T = arr_reshape.Tprint("重塑后:\n", arr_reshape)print("转置后:\n", arr_T)

切片是左闭右开,结束索引位置不包含;
reshape重塑时,新形状乘积必须和原数组size一致;
多维索引和切片,逗号前是行,逗号后是列,别记反。
本篇我们搞定了数组的属性查看、索引定位、切片提取和维度修改,实现了数组的精准操控。第四篇将进入核心运算环节,讲解数组的数学运算、统计计算、广播机制,真正实现高效数值计算,也是NumPy最核心的功能~