Numpy take() 函数
Numpy take() 函数用于根据提供的索引,沿指定轴从数组中提取元素。它允许灵活地对数组进行索引,类似于数组切片,但对元素的选择拥有更多的控制权。
take() 函数适用于一维和多维数组,索引可以是正数或负数,负数索引表示从数组末尾开始的位置。
语法
以下是 Numpy take() 函数的语法 -
numpy.take(a, indices, axis=None, out=None, mode='raise')
参数
以下是 Numpy take() 函数的参数 -
- a:元素所在的输入数组待取元素的索引。
- indices:待取元素的索引。可以是索引数组或单个整数。如果提供负索引,函数将从数组末尾取元素。
- axis(可选):取元素的轴。默认情况下,整个数组会被展平,索引会应用于整个数组。
- out(可选):存储结果的位置。如果未提供,则返回一个新数组。
- mode(可选):一个字符串,用于控制如何处理超出范围的索引。它可以是"raise"(默认)、"wrap"或"clip"。
返回类型
此函数返回一个数组,其中包含从输入数组中提取的元素。
示例
以下是使用 Numpy take() 函数从一维数组中提取元素的基本示例 -
import numpy as np array = np.array([10, 20, 30, 40, 50]) result = np.take(array, [0, 2, 4]) print("Selected elements:", result)
输出
以下是上述代码的输出 −
选定元素:[10 30 50]
示例:使用负索引
take() 函数可以处理负索引,即从数组末尾开始计数的位置。在下面的示例中,我们传递了负索引 -1 和 -3 作为参数。这会从数组末尾选择元素,对于 -1 从最后一个元素开始,对于 -3 从倒数第三个元素开始 -
import numpy as np array = np.array([10, 20, 30, 40, 50]) print("数组:",array) result = np.take(array, [-1, -3]) print("选定元素:", result)
输出
以下是上述代码的输出 -
数组: [10 20 30 40 50] 选定元素: [50 30]
示例:使用 Axis 参数
处理多维数组时,可以使用 axis 参数沿特定轴提取元素。这里,我们从二维数组的第二行(axis 0)提取了元素 -
import numpy as np array = np.array([[10, 20, 30], [40, 50, 60], [70, 80, 90]]) result = np.take(array, [1, 2], axis=0) print("第二行元素:", result)
输出
以下是上述代码的输出 -
第二行元素:[40 50 60]
示例:使用 Mode 参数
当 take() 函数中的 mode 参数设置为 clip 时,可确保在索引超出范围时返回最近的有效元素。在下面的示例中,我们传入了 10 作为索引,而该索引超出了范围。由于模式设置为 clip,该函数返回数组的最后一个元素 -
import numpy as np array = np.array([10, 20, 30, 40, 50]) result = np.take(array, [0, 2, 6], mode='clip') print("选定元素(带裁剪):", result)
输出
以下是上述代码的输出 -
选定元素(带裁剪):[10 30 50]