Numpy中np.vstack() 和 np.hstack() 的实现

 更新时间:2024年04月19日 10:30:06   作者:爱抠脚的coder  
本文主要介绍了Numpy中np.vstack()和np.hstack()的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在这里我们介绍两个拼接数组的方法:

  • np.vstack():在竖直方向上堆叠
  • np.hstack():在水平方向上平铺
import numpy as np
arr1=np.array([1,2,3])
arr2=np.array([4,5,6])
print np.vstack((arr1,arr2))

print np.hstack((arr1,arr2))

a1=np.array([[1,2],[3,4],[5,6]])
a2=np.array([[7,8],[9,10],[11,12]])
print a1
print a2
print np.hstack((a1,a2))

结果如下:

[[1 2 3]
 [4 5 6]]
[1 2 3 4 5 6]
[[1 2]
 [3 4]
 [5 6]]
[[ 7  8]
 [ 9 10]
 [11 12]]
[[ 1  2  7  8]
 [ 3  4  9 10]
 [ 5  6 11 12]]

这里还需要强调一点,在hstack应用的时候,我在做cs231n上的assignment1的时候,我总是在hstack这里出错!才发现我以前学的很肤浅啊!

(1)np.hstack()

函数原型:numpy.hstack(tup)

其中tup是arrays序列,tup : sequence of ndarrays

The arrays must have the same shape along all but the second axis,except 1-D arrays which can be any length.

等价于:np.concatenate(tup, axis=1)

例子一:

import numpy as np
brr1=np.array([1,2,3,4,55,6,7,77,8,9,99])
brr1_folds=np.array_split(brr1,3)
print brr1_folds
print brr1_folds[0:2]+brr1_folds[1:3]
print np.hstack((brr1_folds[:2]+brr1_folds[1:3]))
print brr1_folds[0:2]
print brr1_folds[1:3]
#print np.hstack((brr1_folds[0:2],brr1_folds[1:3]))

最后一行如果不注释掉就会出错;

[array([1, 2, 3, 4]), array([55,  6,  7, 77]), array([ 8,  9, 99])]
[array([1, 2, 3, 4]), array([55,  6,  7, 77]), array([55,  6,  7, 77]), array([ 8,  9, 99])]
[ 1  2  3  4 55  6  7 77 55  6  7 77  8  9 99]
[array([1, 2, 3, 4]), array([55,  6,  7, 77])]
[array([55,  6,  7, 77]), array([ 8,  9, 99])]

错误的原因就是以为我的array的维度不一致。改成+就好啦,加号是list的拼接!

例子二:

print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7]))

结果是:表明了一维的数组hstack是随意的。

[1 2 3 3 4 3 4 5 8 6 6 7]

例子三:

表明我们的hstack必须要第二维度是一样的:

print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7]))
print np.hstack(([[1,2,3],[2,3,4]],[[1,2],[2,3]]))

结果:

[1 2 3 3 4 3 4 5 8 6 6 7]
[[1 2 3 1 2]

 [2 3 4 2 3]]

如果你把上面改成下面就会报错了!!!

print np.hstack(([1,2,3,3,4],[3,4,5,8,6,6,7]))
print np.hstack(([[1,2,3],[2,3,4]],[[1,2]]))

(2)np.vstack()

函数原型:numpy.hstack(tup)

tup : sequence of ndarrays

The arrays must have the same shape along all but the first axis.1-D arrays must have the same length.

表示我们除了第一维可以不一样外,其他的维度上必须相同的shape。一维的数组必须大小一样。

例子一:

print np.vstack(([1,2,3],[3,4,3]))
print np.vstack(([1,2,3],[2,3]))

但是你要注意的是第二行是出错的!

例子二:

print np.vstack(([[1,2,3],[3,4,3]],[[1,3,4],[2,4,5]]))
print np.vstack(([[1,2,3],[3,4,3]],[[3,4],[4,5]]))

同样的表明了,如果我们的数组的第二维不一样所以出错了。

print np.vstack(([[1,2,3],[3,4,3]],[[2,4,5]]))
print np.vstack(([[1,2,3],[3,4,3]],[[4,5]]))

例子三:

我们传入的是list:

import numpy as np
arr1=np.array([[1,2],[2,4],[11,33],[2,44],[55,77],[11,22],[55,67],[67,89]])
arr11=np.array([[11,2,3],[22,3,4],[4,5,6]])
arr1_folds=np.array_split(arr1,3)
print arr1_folds
print np.vstack(arr1_folds)

结果:

[array([[ 1,  2],
       [ 2,  4],
       [11, 33]]), array([[ 2, 44],
       [55, 77],
       [11, 22]]), array([[55, 67],
       [67, 89]])]
[[ 1  2]
 [ 2  4]
 [11 33]
 [ 2 44]
 [55 77]
 [11 22]
 [55 67]
 [67 89]]

到此这篇关于Numpy中np.vstack() 和 np.hstack() 的实现的文章就介绍到这了,更多相关Numpy np.vstack()  np.hstack() 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python-docx文档格式修改方式

    python-docx文档格式修改方式

    使用python-docx库修改docx文档格式的两种方法:第一种是通过自定义函数设置段落和字体样式,第二种是预设Word中的样式后通过代码替换文档整体样式。这两种方式各有优缺点,第一种方法更灵活,而第二种方法可以更全面地保留格式细节
    2024-09-09
  • python安装pytorch方式

    python安装pytorch方式

    这篇文章主要介绍了python安装pytorch方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • python 深入了解GIL锁详细

    python 深入了解GIL锁详细

    这篇文章主要介绍了python 深入了解GIL锁,python的使用者都知道Cpython解释器有一个弊端,真正执行时同一时间只会有一个线程执行,这是由于设计者当初设计的一个缺陷,里面有个叫GIL锁的,但他到底是什么,接下来和小编一起进入下面文章详细内容吧
    2021-10-10
  • python中cv2.projectPoints的用法小结

    python中cv2.projectPoints的用法小结

    这篇文章主要介绍了python中cv2.projectPoints的用法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • Python实现PowerPoint演示文稿到图片的批量转换

    Python实现PowerPoint演示文稿到图片的批量转换

    PowerPoint演示文稿作为展示创意、分享知识和表达观点的重要工具,被广泛应用于教育、商务汇报及个人项目展示等领域,用Python代码可以高效地实现PowerPoint演示文稿到图片的批量转换,从而提升工作效率,文本将介绍如何使用Python实现PowerPoint演示文稿到图片的转换
    2024-06-06
  • python-字典dict和集合set

    python-字典dict和集合set

    这篇文章主要介绍了python-字典dict和集合set,字典是python中的一种数据结构。集合(set)与字典相同均存储key,但只存储key,key不可重复,所以set中的值不可重复,而且是无序,下面来看看更多相关内容吧
    2021-12-12
  • Python实现微信好友数据爬取及分析

    Python实现微信好友数据爬取及分析

    这篇文章会基于Python对微信好友进行数据分析,这里选择的维度主要有:性别、头像、签名、位置,主要采用图表和词云两种形式来呈现结果,其中,对文本类信息会采用词频分析和情感分析两种方法,感兴趣的小伙伴可以了解一下
    2021-12-12
  • python经典100题之皮球掉落的几种解法

    python经典100题之皮球掉落的几种解法

    这篇文章主要给大家介绍了关于python经典100题之皮球掉落的几种解法,这个问题相信不少人都可以从网络上找到相对应的答案本文提供了3种解法,需要的朋友可以参考下
    2023-11-11
  • Django结合ajax进行页面实时更新的例子

    Django结合ajax进行页面实时更新的例子

    今天小编就为大家分享一篇Django结合ajax进行页面实时更新的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Sanic框架路由用法实例分析

    Sanic框架路由用法实例分析

    这篇文章主要介绍了Sanic框架路由用法,结合实例形式较为详细的分析了Sanic框架路由的原理、请求参数、请求类型、重定向等相关操作技巧,需要的朋友可以参考下
    2018-07-07

最新评论