本文链接:https://blog.csdn.net/m0_37393514/article/details/79538748
在这里我们介绍两个拼接数组的方法:

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]]

np.vstack()和np.hstack()的更多相关文章

  1. np.vstack与np.hstack

    转自:https://zhuanlan.zhihu.com/p/82996332   留作备忘

  2. Numpy:np.vstack()&np.hstack() flat/flatten

    一 .  np.vstack: 按垂直方向(行顺序)堆叠数组构成一个新的数组 In[3]: import numpy as np In[4]: a = np.array([[1,2,3]]) a.sh ...

  3. np.hstack和np.vstack

    np.vstack:按垂直方向(行顺序)堆叠数组构成一个新的数组 In[3]: import numpy as np In[4]: a = np.array([[1,2,3]]) a.shape Ou ...

  4. numpy中np.c_和np.r_

    np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...

  5. p,np,npc,np难问题,确定图灵机与非确定图灵机

    本文转自豆瓣_燃烧的影子 图灵机与可计算性 图灵(1912~1954)出生于英国伦敦,19岁进入剑桥皇家学院研究量子力学和数理逻辑.1935年,图灵写出了"论高斯误差函数"的论文, ...

  6. np.tile 和np.newaxis

    output   array([[ 0.24747071, -0.43886742],   [-0.03916734, -0.70580089],   [ 0.00462337, -0.5143158 ...

  7. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  8. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)

    1. np.asarray -- numpy 风格的类型转换 从已有多维数组创建新的多维数组,数据类型可重新设置 >> B = np.asarray(A, dtype='int32') 2 ...

  9. dtypes.py", line 499 _np_qint8 = np.dtype([("qint8", np.int8, (1,)])

    Traceback (most recent call last): File "<stdin>", line 1, in <module> File &q ...

随机推荐

  1. tomcat7.x配置APR高并发模式

    Tomcat支持BIO/NIO/APR三种运行模式 ,性能各色春秋! Apr插件提高Tomcat性能 Tomcat可以使用APR来提供超强的可伸缩性和性能,更好地集成本地服务器技术. APR(Apac ...

  2. c# CryptoStream 类

  3. 为群晖加把锁:使用ssh密钥保障数据安全

    对每一个使用群晖nas的人而言,能保证群晖里保存的数据不被未经授权的人访问下载甚至破坏可能是最重要的事情.但数据只要上网,就免不了担心密码被破解,群晖被侵入.现在网络上,要破解密码可能是最简单不过的事 ...

  4. python多线程扫描爆破网站服务器思路【笔记】

    这个扫描是概率问题,是需要字典的,以下代码是作为参考,字典可以去网上下载,我就不提供,我提供的是思路! #!/usr/bin/env python # coding=utf-8   from IPy ...

  5. 解决jdbc向数据库存入数据出现乱码的情况

    解决办法 1.修改项目的编码,建议统一使用utf-8来实现,这样整个项目就是utf-8. 2.jdbc:mysql://locathost:3306/数据库名称?useUnicode=true& ...

  6. Laravel下载地址合集

    laravel官网直接下载地址都没了. 都要用composer装? 在此记录一下直接下载地址 master      https://github.com/laravel/laravel/archiv ...

  7. kafka的HA机制

    1.kafka的HA机制:副本机制+消息同步+leader选举. 每个topic有多个partition,每个partition又有多个副本,这些副本当中也存在不同的角色,leader.followe ...

  8. C# winform Panel 添加 滚动条

    Detailed discussion here. Try this instead for 'only' scrolling vertical.(auto scroll needs to be fa ...

  9. LIO -SCSI target

    2010年底,LIO 项目获选成为新的内核态的 SCSI target,取代原有的用户态的 STGT 项目.当时有两个主要的竞争项目(LIO和SCST),都在努力将代码并入主线内核.本文将比较着两个项 ...

  10. CF1163E Magical Permutation【线性基,构造】

    题目描述:输入一个大小为\(n\)的正整数集合\(S\),求最大的\(x\),使得能构造一个\(0\)到\(2^x-1\)的排列\(p\),满足\(p_i\oplus p_{i+1}\in S\) 数 ...