本文共 1334 字,大约阅读时间需要 4 分钟。
在 NumPy 中,数组是最基本的数据结构。以下代码创建一个 2x4 的二维数组:
import numpy as nparray1 = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
NumPy 的切片操作允许我们提取数组的一部分。以下代码提取第二行的第二到第四个元素:
array1_slice1 = array1[1][1:4] # 等价于 array1_slice1 = array1[1, 1:4]array1_slice2 = array1[1][1:3]
查看 array1_slice1 的结果:
array1_slice1
输出结果为:
array([6, 7, 8])
查看 array1_slice2 的结果:
array1_slice2
输出结果为:
array([6, 7])
切片操作会影响原始数组。以下代码将 array1_slice1 的所有元素设置为 0:
array1_slice1[:] = 0 # 等价于 array1_slice1[:] = [0, 0, 0]
此时,array1_slice1 的结果为:
array([0, 0, 0])
同时,原始数组 array1 也随之改变为:
array([[1, 2, 3, 4], [5, 0, 0, 0]])
需要注意的是,array1_slice2 也会受到影响:
array1_slice2
输出结果为:
array([0, 0])
NumPy 允许我们同时指定行和列的范围。以下代码提取第一行和第二行的第二列到第四列:
array1[:2, 1:]
输出结果为:
array([[2, 3, 4], [0, 0, 0]])
以下代码提取所有行的第二列:
array1[:2, 1]
输出结果为:
array([2, 0])
以下代码提取第二行的所有元素:
array1[1]
输出结果为:
array([5, 0, 0, 0])
以下代码提取第二行的所有列:
array1[1, :]
输出结果为:
array([5, 0, 0, 0])
以下代码提取从第二行到最后的所有行:
array1[1:, :]
输出结果为:
array([[5, 0, 0, 0]])
我们可以通过 .shape 方法获取切片的维度信息。以下代码显示 array1[1, :] 的维度:
array1[1, :].shape
输出结果为:
(4,)
以下代码显示 array1[1:, :] 的维度:
array1[1:, :].shape
输出结果为:
(1, 4)
通过上述操作,我们可以清晰地看到 NumPy 切片操作的灵活性和强大。切片操作会直接影响原始数组,需要谨慎使用。理解多维切片是掌握 NumPy 功能的关键能力。
转载地址:http://dwnfk.baihongyu.com/