iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >numpy中数组的堆叠方法
  • 928
分享到

numpy中数组的堆叠方法

numpy数组堆叠numpy数组叠加 2023-02-14 12:02:44 928人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、环境 二、功能用途及官方说明三、实例一、环境  Anaconda 3python 3.6Numpy 1.14.3 二、功能用途及官方说

一、环境 

Anaconda 3
python 3.6
Numpy 1.14.3

二、功能用途及官方说明

1、hstack功能:沿水平方向堆叠数组(numpy array)
用途举例机器学习数据集准备过程中,可以用于将数据列与标签列在水平方向上合并,从而得到带标签的数据集
官方说明https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.hstack.html#numpy.hstack

2、vstack功能:沿垂直方向堆叠数组(numpy array)
用途举例:机器学习数据集准备过程中,可以用于将从过个数据文件中加载的数据行在垂直方向上合并,从而将所有数据集整合为一个数据集
官方说明Https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.vstack.html

三、实例

实例一:使用 np.hstack 将数据与标签合并

>>> import numpy as np
# 数据准备
>>> data = [i for i in range(18)]
>>> data_array = np.asarray(data)
>>> data_array = np.asarray(data).reshape([6,3])
>>> data_array.shape
(6, 3)
>>> data_array
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17]])
# 标签准备
>>> label = [0, 1] *3 
>>> label_array = np.asarray(label)
>>> label_array.shape
(6,)
>>> label_array
array([0, 1, 0, 1, 0, 1])
# 在数据的右侧水平方向上合并标签
>>> data_label = np.hstack((data_array,label_array))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/numpy/core/shape_base.py", line 288, in hstack
    return _nx.concatenate(arrs, 1)
ValueError: all the input arrays must have same number of dimensions

直观上看, np.hstack 只要保证要合并的两个 numpy 数组的数据行相同,那么两个 numpy 数组的列就可以沿着水平方向合并了!这里也是初学者常遇到个一个问题,仔细看一下报错信息就会很容易发现,问题出在要合并的两个 numpy 数组的维度数量不一致,data_array 的维度是二维(6, 3),而 label_array 的维度是一维 (6, ),因此即使两个 numpy 数组的行数一样,也不能沿水平方向进行正常的列堆叠!
正确的方法:

# 在准备标签时,先将一维的标签 reshape 为二维 numpy 数组,即 6 行 1 列
>>> label_array = label_array.reshape(-1,1)
>>> data_label = np.hstack((data_array,label_array))
>>> data_label.shape
(6, 4)
>>> data_label
array([[ 0,  1,  2,  0],
       [ 3,  4,  5,  1],
       [ 6,  7,  8,  0],
       [ 9, 10, 11,  1],
       [12, 13, 14,  0],
       [15, 16, 17,  1]])

实例二:使用 np.vstack 合并两组数据集

# 准备第一数据集
>>> import numpy as np
>>> data1 = np.random.nORMal(0,1,(2,5))
>>> data1.shape
(2, 5)
>>> data1
array([[-1.49100993,  0.03782522,  0.33961941, -0.64073217,  0.84000297],
       [-1.02662855, -0.91858614, -0.27410549, -0.86956142, -0.44147313]])
# 准备第二个数据集
>>> data2 = np.arange(0,30,2)
>>> data2 = np.arange(0,30,2).reshape([3,5])
>>> data2.shape
(3, 5)
>>> data2
array([[ 0,  2,  4,  6,  8],
       [10, 12, 14, 16, 18],
       [20, 22, 24, 26, 28]])
# 垂直方向堆叠连个数据集
>>> data = np.vstack((data1,data2))
>>> data.shape
(5, 5)
>>> data
array([[-1.49100993,  0.03782522,  0.33961941, -0.64073217,  0.84000297],
       [-1.02662855, -0.91858614, -0.27410549, -0.86956142, -0.44147313],
       [ 0.        ,  2.        ,  4.        ,  6.        ,  8.        ],
       [10.        , 12.        , 14.        , 16.        , 18.        ],
       [20.        , 22.        , 24.        , 26.        , 28.        ]])

实例三:借助列表(list)对多个数据集进行一次性堆叠合并
可以用于在 for / while 循环读取数据集时,依次先将数据加入到列表(list)中,然后在多个数据集一起堆叠合并,而不用在繁琐地使用两两数据集堆叠合并的方式了

# 准备第一个数据集
>>> data_v1 = np.random.randint(0,10,(2,5))
>>> data_v1.shape
(2, 5)
>>> data_v1
array([[4, 4, 0, 7, 3],
       [3, 9, 0, 3, 0]])
# 准备第二个数据集
>>> data_v2 = np.ones((3,5))
>>> data_v2.shape
(3, 5)
>>> data_v2
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])
# 准备第三个数据集
>>> data_v3 = np.full((2,5),0)
>>> data_v3.shape
(2, 5)
>>> data_v3
array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])
# 定义一个临时存放多个数据集的列表(list),并将所有数据集添加到列表中
>>> data_vlist = []
>>> data_vlist.append(data_v1)
>>> data_vlist.append(data_v2)
>>> data_vlist.append(data_v3)
>>> len(data_vlist)
3
>>> data_vlist
[array([[4, 4, 0, 7, 3],
       [3, 9, 0, 3, 0]]), array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]]), array([[0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0]])]
# 将存放所有数据集的列表作为 np.vstack() 的输入参数,即可一次性合并多个数据集
>>> data_vstack = np.vstack(data_vlist)
>>> data_vstack
array([[4., 4., 0., 7., 3.],
       [3., 9., 0., 3., 0.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
>>> data_vstack.shape
(7, 5)
>>> data_vstack
array([[4., 4., 0., 7., 3.],
       [3., 9., 0., 3., 0.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
#########################################################

同理,np.hstack 也可以借助列表(list)一次性水平合并多个数据列

# 准备首个数列
>>> import numpy as np
>>> data_h1 = np.random.randint(0, 10, (3,3))
>>> data_h1.shape
(3, 3)
>>> data_h1 
array([[6, 4, 5],
       [4, 5, 0],
       [7, 1, 9]])
# 准备第二个数列
>>> data_h2 = np.zeros((3,2))
>>> data_h2.shape
(3, 2)
>>> data_h2
array([[0., 0.],
       [0., 0.],
       [0., 0.]])
# 准备第三个数列
>>> data_h3 = np.ones((3,1), dtype=int)
>>> data_h3.shape
(3, 1)
>>> data_h3
array([[1],
       [1],
       [1]])
# 定义一个临时存放多个数据列的列表(list),并将所有数据列添加到列表中
>>> data_hlist = []
>>> data_hlist.append(data_h1)
>>> data_hlist.append(data_h2)
>>> data_hlist.append(data_h3)
>>> len(data_hlist)
3
>>> data_hlist
[array([[6, 4, 5],
       [4, 5, 0],
       [7, 1, 9]]), array([[0., 0.],
       [0., 0.],
       [0., 0.]]), array([[1],
       [1],
       [1]])]
# 将存放所有数据列的列表作为 np.hstack() 的输入参数,即可一次性合并多个数据列
>>> data_hstack = np.hstack(data_hlist)
>>> data_hstack.shape
(3, 6)
>>> data_hstack
array([[6., 4., 5., 0., 0., 1.],
       [4., 5., 0., 0., 0., 1.],
       [7., 1., 9., 0., 0., 1.]])

到此这篇关于numpy中数组的堆叠方法的文章就介绍到这了,更多相关numpy 数组堆叠内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: numpy中数组的堆叠方法

本文链接: https://www.lsjlt.com/news/195948.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • numpy中数组的堆叠方法
    目录一、环境 二、功能用途及官方说明三、实例一、环境  Anaconda 3Python 3.6Numpy 1.14.3 二、功能用途及官方说...
    99+
    2023-02-14
    numpy 数组堆叠 numpy 数组叠加
  • numpy数组叠加的实现示例
    目录前言一、创建一个array二、使用np.r_和np.c_进行数组相加1.对一维数组的叠加2.将数组转成二维3. hstack以及vstack前言 针对于一维数组的存储方式,即(n...
    99+
    2024-04-02
  • python numpy库中数组遍历的方法
    1.对于一维数组,可以有: 2. 对于二维数组:考虑可将其看作为矩阵,故可以如下书写二重遍历  这里外层循环的是二维数组A的行,内层则是列 同时c的作用:不想用肉眼直接...
    99+
    2024-04-02
  • Python数据分析之堆叠数组函数示例总结
    目录numpy 堆叠数组ravel() 函数stack() 函数vstack()函数hstack()函数concatenate() 函数numpy 堆叠数组 在做图像和 nlp 的...
    99+
    2023-02-23
    Python堆叠数组函数 Python 数据分析
  • Python数据分析之堆叠数组函数怎么使用
    今天小编给大家分享一下Python数据分析之堆叠数组函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。numpy 堆...
    99+
    2023-07-05
  • numpy数组的list转换方法
    利用list转换为numpy数组的方法,需要具体代码示例 在Python中,我们经常需要处理大量的数值数据,而numpy库是Python中常用的数值计算工具之一。它提供了丰富的数学函数和方便的数组操作功能。而在numpy中,通常...
    99+
    2024-01-26
    方法 numpy数组 list转换
  • Numpy数组的组合与分割实现的方法
    目录数组的组合1.水平组合2.垂直组合3.行组合和列组合4.深度组合数组的分割1.水平分割1.1hsplit函数1.2split函数2.垂直分割3.深度分割在介绍数组的组合和分割前,...
    99+
    2024-04-02
  • Android实现动态添加数据与堆叠折线图的方法是什么
    本篇内容介绍了“Android实现动态添加数据与堆叠折线图的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果视频引用描述本示例采...
    99+
    2023-06-25
  • sql分组但不折叠数据的方法是什么
    在使用SQL进行分组时,可以使用GROUP BY子句来实现。GROUP BY子句将根据指定的列对数据进行分组,并将相同值的行放在一起...
    99+
    2023-09-15
    sql
  • numpy数组拼接方法是什么
    numpy数组拼接方法有使用concatenate()函数、stack()函数和hstack()函数。详细介绍:1、concatenate()函数:该函数可以按照指定的轴将多个数组进行拼接;2、stack()函数:该函数可以按照指定的轴将多...
    99+
    2023-11-22
    numpy Numpy数组(Numpy array)
  • Python多进程共享numpy 数组的方法
    为什么要用numpy     Python中提供了list容器,可以当作数组使用。但列表中的元素可以是任何对象,因此列表中保存的是对象的指针,这样一来,...
    99+
    2024-04-02
  • php循环中数组不叠加
    在 PHP 中,数组是一种强大而重要的数据类型。当我们需要在循环中对数组进行操作时,有时候会发现数组的值会叠加,这可能会导致错误的结果。在本文中,我们将讨论如何在 PHP 循环中避免数组叠加的问题。首先,让我们来了解一下数组在 PHP 中的...
    99+
    2023-05-19
  • Python中numpy数组的计算与转置的方法是什么
    本篇内容介绍了“Python中numpy数组的计算与转置的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、numpy数组与数的运...
    99+
    2023-06-21
  • numpy三维数组转置的方法是什么
    在numpy中,可以使用`numpy.transpose()`函数来进行三维数组的转置。该函数的语法如下:```pythonnump...
    99+
    2023-09-29
    numpy
  • 交换numpy数组的维度方法是什么?
    numpy如何交换数组维度,需要具体代码示例 numpy是Python中一个强大的数值计算库,它提供了许多方便的函数和方法来处理数组。在numpy中,我们可以轻松地交换数组的维度。本文将介绍如何使用numpy库中的函数来实现数组...
    99+
    2024-01-26
  • Numpy数组与列表的用法
    本篇内容主要讲解“Numpy数组与列表的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Numpy数组与列表的用法”吧! 1. 本文介绍今天为大家介绍以下内容: Ⅰ nda...
    99+
    2023-06-15
  • Python中的numpy数组模块
    目录一、numpy简介1、numpy库作用:2、NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:3、NumPy 应用二、为什么用numpy三、创建numpy数组1、...
    99+
    2024-04-02
  • 浅谈Java数组的一些使用方法及堆栈存储
    数组用于存储一组同一数据类型数据的容器数组会对放入其中的数据自动编号,编号是从0开始的---下标定义格式数据类型[] 数组名 = new 数据类型[数组的大小];---可以先声明再初始化int[] arr = new int[5];---定...
    99+
    2023-05-31
    java 数组 堆栈
  • numpy数组拼接方法的实用技巧指南
    实战指南:如何灵活运用numpy数组拼接方法 引言:在进行数据分析和科学计算的过程中,我们经常需要对数组进行拼接操作,以实现数据的组合和整合。Numpy是Python中的重要科学计算库,提供了丰富的数组操作函数,其中包括了多种数...
    99+
    2024-01-26
    实战指南 numpy数组 拼接方法
  • Numpy中创建数组的9种方式小结
    目录1、使用empty方法创建数组2、使用array创建数组3、使用zeros/ones创建数组4、使用arange创建数组5、使用linspace创建数组6、使用numpy.ran...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作