np.repeat
是 NumPy 库中的一个函数,用于沿着指定的轴重复数组的元素。这个函数非常灵活,可以用于各种数据形状,包括一维数组、二维数组以及更高维度的数组。
基本用法
import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3])
# 使用 np.repeat 重复数组元素
# 这里的 repeats 参数指定了每个元素应该被重复的次数
repeated_arr = np.repeat(arr, [1, 2, 3])
print(repeated_arr)
输出:
[1 2 2 3 3 3]
在这个例子中,数组 [1, 2, 3]
中的元素 1
被重复了 1
次,2
被重复了 2
次,3
被重复了 3
次。
沿指定轴重复
当处理多维数组时,你可以指定一个轴来重复元素。
# 创建一个二维数组
arr_2d = np.array([[1, 2], [3, 4]])
# 沿着第一个轴(行)重复元素
# 这里 axis=0 表示沿着行方向,即每一行都会被重复指定的次数
repeated_arr_2d_axis0 = np.repeat(arr_2d, [2, 1], axis=0)
print(repeated_arr_2d_axis0)
输出:
[[1 2]
[1 2]
[3 4]]
在这个例子中,二维数组的第一行被重复了 2
次,第二行被重复了 1
次。
如果你沿着第二个轴(列)重复元素,结果会是这样的:
# 沿着第二个轴(列)重复元素
# 这里 axis=1 表示沿着列方向,即每一列都会被重复指定的次数
repeated_arr_2d_axis1 = np.repeat(arr_2d, [2, 1], axis=1)
print(repeated_arr_2d_axis1)
输出:
[[1 1 2]
[3 3 4]]
在这个例子中,二维数组的第一列(实际上是每行的第一个元素)被重复了 2
次(但实际上看起来像是每行的前两个元素都是原来的第一个元素,因为它们是连续的),第二列被重复了 1
次(但实际上没有变化,因为已经是最后一次了,这里的 1
主要是指示不改变该列的重复次数)。不过,更常见的做法是指定每个元素在其所在列中的重复次数,比如 [1, 2]
会使得第一列的元素不重复,第二列的元素重复一次。
注意事项
repeats
参数可以是一个整数,也可以是一个与数组相应维度长度相同的数组。如果是一个整数,那么数组中的每个元素都会被重复这么多次。如果是一个数组,那么每个元素会被重复对应位置上的次数。axis
参数指定了沿着哪个轴进行重复。对于一维数组,这个参数可以忽略(或者设置为None
,但实际效果与省略相同),因为只有一个方向可以重复。对于多维数组,必须明确指定轴。- 如果
axis
参数的值超出了数组的维度范围,会引发AxisError
。