全能编程开发工程师必会np.vstack函数详解

一、np.vstack函数概述

在Python中有很多数学计算库可以使用。而numpy作为最常用的计算库之一,其拥有强大的数组操作和数据处理能力。其中,np.vstack函数就是numpy中的一种介于数组拼接和平移之间的函数。它可以将多个数组以垂直方向堆叠在一起,返回一个新的数组。

下面我们通过实例,来深入理解这个函数:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate((a, b), axis=0)
print(c)

d = np.vstack((a, b))
print(d)

这里我们首先定义a、b两个一维数组。之后通过np.concatenate()函数将a、b按照axis=0(即纵向)拼接在一起,得到c=[1, 2, 3, 4, 5, 6]。 可以看到,这种操作并没有改变a、b原来的维度,而是合并了它们的元素。

下面用同样的a、b数组,我们将其通过np.vstack()函数进行垂直方向的堆叠,得到d=[[1,2,3],[4,5,6]]。这是一个二维数组,可以直观的感受到这个函数实现的效果。

二、np.vstack函数语法

np.vstack函数的语法如下:

numpy.vstack(tup: Union[Tuple[numpy.ndarray, …], numpy.ndarray]) -> numpy.ndarray

其中,

tup:需要进行垂直堆叠的数组序列或一个二维数组。

返回值:返回一个新的垂直堆叠后的数组。

三、np.vstack函数应用案例

1. 使用np.vstack函数增加矩阵的行数

在实际应用中,我们有时候需要增加矩阵的行数。这时候,我们就可以使用np.vstack函数来实现。例如,我们要将一个n行3列的矩阵a平移成m行3列的矩阵b,其中n<m。

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.vstack((a, np.zeros((m-n,3))))

这里我们将a和一个形状为(m-n,3)、元素全为0的矩阵堆叠在一起,得到一个m行3列的矩阵b。其中,(m-n,3)即为将a的行数延长到m的行数时需要添加的全0行的行数。

2. 使用np.vstack函数拼接图片并保存

在图像处理领域中,我们经常需要将多张图片拼接在一起。这时候,我们可以使用np.vstack函数来实现。例如,我们将两张图片按照垂直方向拼接起来,并保存为新的图片。

import numpy as np
import cv2

img1 = cv2.imread('img1.jpg', 1)
img2 = cv2.imread('img2.jpg', 1)
img_concat = np.vstack((img1, img2))
cv2.imwrite('img_concat.jpg', img_concat)

这里我们先使用cv2.imread函数读取img1和img2两张图片。之后通过np.vstack函数将两张图片拼接在一起得到img_concat,并使用cv2.imwrite函数将拼接后的图片保存成一张新的jpeg格式的图片。

3. 使用np.vstack函数堆叠矩阵并进行PCA分析

在数据处理与分析领域中,使用奇异值分解(SVD)来计算数据中的主成分分析(PCA)是一种常见的方法。其中,矩阵就是SVD基本算法中的重要数据结构之一。因此,我们可以使用np.vstack函数来进行矩阵的堆叠,从而进行主成分分析。

import numpy as np
from sklearn.decomposition import PCA

X1 = np.array([[2, 3], [7, 2], [8, 5], [3, 8], [5, 9]])
X2 = np.array([[4, 5], [3, 2], [9, 4], [7, 3], [1, 1]])
X = np.vstack((X1, X2))
pca = PCA(n_components=2)
pca.fit(X)
print(pca.explained_variance_ratio_)

这里我们构造了两个二维矩阵X1和X2。之后使用np.vstack函数堆叠得到新的二维矩阵X,其中的数据就是原来的矩阵堆叠构成的。最后,我们使用sklearn.decomposition模块下的PCA类,对新的矩阵X进行主成分分析,并输出前两个主成分的方差占比。

四、np.vstack函数使用注意事项

1. 需要注意垂直堆叠序列中各元素的维度是否一致。

2. 垂直堆叠所有数组的维数必须相同。

3. 垂直堆叠时,数据类型必须相同,否则将在堆叠时按照较高精度的数据类型来处理。

原创文章,作者:FDQAO,如若转载,请注明出处:https://www.506064.com/n/369959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
FDQAOFDQAO
上一篇 2025-04-14 02:23
下一篇 2025-04-18 13:40

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python中capitalize函数的使用

    在Python的字符串操作中,capitalize函数常常被用到,这个函数可以使字符串中的第一个单词首字母大写,其余字母小写。在本文中,我们将从以下几个方面对capitalize函…

    编程 2025-04-29
  • Python中的while true:全能编程开发必知

    对于全能编程开发工程师而言,掌握Python语言是必不可少的技能之一。而在Python中,while true是一种十分重要的语句结构,本文将从多个方面对Python中的while…

    编程 2025-04-29
  • Python中set函数的作用

    Python中set函数是一个有用的数据类型,可以被用于许多编程场景中。在这篇文章中,我们将学习Python中set函数的多个方面,从而深入了解这个函数在Python中的用途。 一…

    编程 2025-04-29
  • 三角函数用英语怎么说

    三角函数,即三角比函数,是指在一个锐角三角形中某一角的对边、邻边之比。在数学中,三角函数包括正弦、余弦、正切等,它们在数学、物理、工程和计算机等领域都得到了广泛的应用。 一、正弦函…

    编程 2025-04-29
  • 单片机打印函数

    单片机打印是指通过串口或并口将一些数据打印到终端设备上。在单片机应用中,打印非常重要。正确的打印数据可以让我们知道单片机运行的状态,方便我们进行调试;错误的打印数据可以帮助我们快速…

    编程 2025-04-29
  • Python3定义函数参数类型

    Python是一门动态类型语言,不需要在定义变量时显示的指定变量类型,但是Python3中提供了函数参数类型的声明功能,在函数定义时明确定义参数类型。在函数的形参后面加上冒号(:)…

    编程 2025-04-29
  • Python定义函数判断奇偶数

    本文将从多个方面详细阐述Python定义函数判断奇偶数的方法,并提供完整的代码示例。 一、初步了解Python函数 在介绍Python如何定义函数判断奇偶数之前,我们先来了解一下P…

    编程 2025-04-29
  • Python实现计算阶乘的函数

    本文将介绍如何使用Python定义函数fact(n),计算n的阶乘。 一、什么是阶乘 阶乘指从1乘到指定数之间所有整数的乘积。如:5! = 5 * 4 * 3 * 2 * 1 = …

    编程 2025-04-29
  • lsw2u1:全能编程开发工程师的利器

    lsw2u1是一款多功能工具,可以为全能编程开发工程师提供便利的支持。本文将从多个方面对lsw2u1做详细阐述,并给出对应代码示例。 一、快速存取代码段 在日常开发中,我们总会使用…

    编程 2025-04-29

发表回复

登录后才能评论