Numpy 创建由向量组成的矩阵

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.vstacknumpy.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.vstacknumpy.hstack 函数将多个向量堆叠成矩阵,也可以使用 numpy.concatenate 函数在不同的方向上拼接数组。此外,我们还介绍了 numpy.tile 函数,它可以将一个数组重复多次来创建新的数组。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程