Numpy 数组重复和变换
在本文中,我们将介绍如何使用Numpy库中的函数实现对数组进行重复和变换操作。这在数据处理和图像处理中非常常见。我们将讨论以下几个方面:
- 将一个数组在某一轴上进行重复:numpy.repeat
- 复制数组并改变尺寸:numpy.tile
- 对数组进行旋转、翻转和更改形状:numpy.flip, numpy.fliplr, numpy.flipud, numpy.rot90, numpy.reshape
阅读更多:Numpy 教程
numpy.repeat
numpy.repeat函数可以在数组的某一轴上进行重复。它有两个主要参数:第一个是输入的数组,第二个是重复次数。如果没有指定轴,函数将会以扁平化数组的形式进行操作。
import numpy as np
a = np.array([[0, 1], [2, 3]])
print(np.repeat(a, 2)) # [0 0 1 1 2 2 3 3]
print(np.repeat(a, 3, axis=0)) # [[0 1]
# [0 1]
# [0 1]
# [2 3]
# [2 3]
# [2 3]]
numpy.tile
numpy.tile可以通过沿水平方向或垂直方向多次堆叠数组来改变数组的大小。它有两个主要参数:第一个是输入数组,第二个是堆叠次数。如果堆叠参数是一个元组,它将对每个维度进行重复。
import numpy as np
a = np.array([1, 2, 3])
print(np.tile(a, 2)) # [1 2 3 1 2 3]
print(np.tile(a, (2, 2))) # [[1 2 3 1 2 3]
# [1 2 3 1 2 3]]
b = np.array([[1, 2], [3, 4]])
print(np.tile(b, 2)) # [[1 2 1 2]
# [3 4 3 4]]
print(np.tile(b, (2, 2))) # [[1 2 1 2]
# [3 4 3 4]
# [1 2 1 2]
# [3 4 3 4]]
numpy.flip, numpy.fliplr, numpy.flipud
numpy.flip可以反转数组中的元素。当我们把一个二维数组想象成一个图片,这就是对图片的上下或左右翻转。
import numpy as np
a = np.array([1, 2, 3])
print(np.flip(a)) # [3 2 1]
b = np.array([[1, 2], [3, 4]])
print(np.flip(b)) # [[4 3]
# [2 1]]
print(np.fliplr(b)) # [[2 1]
# [4 3]]
print(np.flipud(b)) # [[3 4]
# [1 2]]
numpy.rot90
numpy.rot90函数可以进行90度旋转。它的主要参数是输入数组和旋转次数。当我们把一个二维数组想象成一个图片,这就是对图片的旋转操作。
import numpy as np
a = np.array([[1, 2], [3, 4]])
print(np.rot90(a)) # [[2 4]
# [1 3]]
print(np.rot90(a, 2)) # [[4 3]
# [2 1]]
numpy.reshape
numpy.reshape函数可以改变数组的形状,它的一个参数是输入数组,另一个参数是新的形状。如果新的形状是一个元组,那么将会按照元组中的指定顺序对数组进行重构。
import numpy as np
a = np.array([[1, 2], [3, 4], [5, 6]])
print(np.reshape(a, (2, 3))) # [[1 2 3]
# [4 5 6]]
b = np.array([1, 2, 3, 4, 5, 6])
print(np.reshape(b, (2, 3))) # [[1 2 3]
# [4 5 6]]
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print(np.reshape(c, (-1, 2))) # [[1 2]
# [3 4]
# [5 6]
# [7 8]]
总结
以上是Numpy库中对数组进行重复和变换操作的一些常用函数。这些函数可以帮助我们在数据处理和图像处理中快速地完成重复和变换操作。通过掌握它们,我们可以更加高效地进行数据挖掘、机器学习等相关领域的研究和实践。