Numpy 如何沿两个轴重复数组元素
在Numpy中,我们可以通过使用tile()函数来重复数组中的元素。它可以在一个或多个轴上沿着数组的轴重复元素。但如果我们想要在两个轴上重复元素该怎么办呢?本文将介绍使用Numpy重复数组元素的方法,并且将重点放在如何在两个轴上重复元素。
阅读更多:Numpy 教程
tile()函数的使用
在Numpy中,通过tile()函数来重复数组的元素。下面我们将介绍tile()函数的语法:
numpy.tile(A, reps)
其中,A为要重复的数组,reps参数表示重复的次数。例如,reps=(2, 2)表示沿两个轴重复元素两次。即在行列各自方向都重复两次。
下面通过一个例子,演示在单个轴上重复数组的元素:
import numpy as np
x = np.array([1, 2, 3])
np.tile(x, 3)
输出:
array([1, 2, 3, 1, 2, 3, 1, 2, 3])
在这个例子中,使用tile(x, 3)将x数组的元素在单个轴上重复3次。我们可以看到新的数组包含原数组中的每个元素,重复了3次。
沿两个轴重复数组元素
接下来,我们将介绍在两个轴上重复数组元素的方法。为了说明方便,我们先创建一个 2 行 3 列的数组。
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
现在,我们要将这个数组的行扩展为4行,列扩展为5列,即行和列方向各重复一次。我们可以使用以下方法:
y = np.tile(x, (2, 2))
这里reps参数传入了一个元组(2, 2),表示在行和列方向都重复2次。打印出数组y的形状:
print(y.shape)
输出:
(4, 6)
我们可以看到,新的数组y的形状为 (4, 6),行扩展到了4行,列扩展到了6列。下面打出新的数组的值:
print(y)
输出:
array([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
注意到,数组的行和列方向上都重复了一次。
例子:用Numpy生成棋盘
下面我们用以上介绍到的方法用Numpy生成一个棋盘。我们先定义棋盘的形状和元素:
shape = (8, 8)
b = np.zeros(shape, dtype=int)
b[1::2, ::2] = 1
b[::2, 1::2] = 1
通过np.zeros()创建一个空棋盘,把b数组的偶数列和奇数行上的元素赋为1,把奇数列和偶数行上的元素赋为1,即可生成一个8×8的棋盘。下面通过可视化方式查看棋盘:
import matplotlib.pyplot as plt
plt.imshow(b, cmap='binary')
plt.show()
黑白相间的方格排列成8×8的棋盘,看起来非常美观。
总结
在本文中,我们介绍了Numpy中如何通过tile()函数重复数组元素,并说明了如何在两个轴上重复数组元素。最后,我们通过一个实例生成了一个美观的棋盘。如果您的工作中需要大量的数组操作,那么掌握Numpy中的这些操作将是非常有帮助的。
极客笔记