Numpy 创建由向量组成的矩阵
在进行机器学习和数据分析时,经常需要用到矩阵和向量。Numpy 是一个用于数值计算的 Python 库,它提供了一些矩阵和向量的基本操作,能够快速高效地进行数据处理。本文将会介绍如何使用 Numpy 中的函数创建由向量组成的矩阵。
阅读更多:Numpy 教程
创建行向量和列向量
在 Numpy 中,向量是一维数组,可以用 numpy.array
函数来创建。我们可以使用以下代码创建一个行向量:
import numpy as np
row = np.array([1, 2, 3])
print(row)
输出:
[1 2 3]
同样的,我们可以创建一个列向量:
col = np.array([[1], [2], [3]])
print(col)
输出:
[[1]
[2]
[3]]
注意,在创建列向量时,需要在每个元素外部加一对中括号。这是因为 Numpy 要求列向量的维度为 (n, 1)
,其中 n
为向量的长度,而行向量的维度为 (1, n)
,因此不需要加外层中括号。
创建矩阵
有了向量,我们可以使用 Numpy 中的函数将它们组合成矩阵。下面介绍几种常见的方式。
使用 numpy.vstack
函数创建矩阵
numpy.vstack
函数可以用于垂直堆叠矩阵或向量。例如,我们可以将两个行向量堆叠起来:
matrix = np.vstack((row, row))
print(matrix)
输出:
[[1 2 3]
[1 2 3]]
numpy.vstack
函数接受一个元组作为参数,元组中的元素可以是任意形状的数组,但是它们在第一维(行)之外的维度必须相同。
我们也可以使用 numpy.hstack
函数在水平方向堆叠矩阵:
matrix = np.hstack((col, col))
print(matrix)
输出:
[[1 1]
[2 2]
[3 3]]
numpy.hstack
函数的用法与 numpy.vstack
函数类似。
使用 numpy.concatenate
函数创建矩阵
除了 numpy.vstack
和 numpy.hstack
函数,我们还可以使用 numpy.concatenate
函数来创建矩阵。numpy.concatenate
函数可以同时在水平方向和垂直方向上堆叠多个数组。例如,我们可以利用 numpy.concatenate
函数将列向量组合成矩阵:
matrix = np.concatenate((col, col), axis=1)
print(matrix)
输出:
[[1 1]
[2 2]
[3 3]]
numpy.concatenate
函数的第二个参数 axis
指定拼接的方向。当 axis=0
时,函数沿着垂直方向堆叠数组,当 axis=1
时,函数沿着水平方向堆叠数组。
使用 numpy.tile
函数创建矩阵
numpy.tile
函数可以将一个数组重复几次来创建一个新的数组。这个函数可以用于将向量堆叠成矩阵。例如,我们可以将一个行向量重复两次,并将这两个向量垂直堆叠起来:
matrix = np.tile(row, (2, 1))
print(matrix)
输出:
[[1 2 3]
[1 2 3]]
numpy.tile
函数的第二个参数是一个元组,指定每个维度上要重复的次数。在上面的例子中,我们将第一维(行)重复了两次,第二维(列)重复了一次,因此得到了一个 2 × 3 的矩阵。
示例
现在我们来看一个综合性的示例。假设我们要创建一个矩阵,该矩阵的第一行是从 0 开始的 5 个整数,第二行是从 1 开始的 5 个整数,以此类推,直到第五行为从 4 开始的 5 个整数。
可以使用循环和列表推导式来实现这个功能,但是使用 Numpy 函数可以使代码更加简洁高效。我们可以先创建一个列向量,其中每个元素都是从 0 开始的 5 个整数,然后使用 numpy.tile
函数将它重复 5 次,最后将得到的矩阵转置即可。
import numpy as np
col = np.arange(5).reshape(-1, 1)
matrix = np.tile(col, (1, 5)).T
print(matrix)
输出:
[[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
总结
本文介绍了如何使用 Numpy 中的函数创建由向量组成的矩阵。我们可以使用 numpy.vstack
和 numpy.hstack
函数将多个向量堆叠成矩阵,也可以使用 numpy.concatenate
函数在不同的方向上拼接数组。此外,我们还介绍了 numpy.tile
函数,它可以将一个数组重复多次来创建新的数组。