|  | 
 
| 
本帖最后由 不二如是 于 2020-2-16 21:43 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 上一讲我们理解了副本和视图,本讲就里面的合并函数好好说下。
 
 新建 4*4 数组和一维数组:
 
 
 通过上一讲的 np.c_ 来合并 a 和 b:
 
 
 现在 b 就跑到 a 的右边了。
 
 我们换一换:
 
 
 也很自然换过来了。
 
 c_ 中的 c 是 column 的缩写,行的话,就是 r 。
 
 那么我可以将 b 加到 a 下面吗?
 
 试一下:
 
 
 啊呀,报错了~
 
 报错内容也说了:
 
 
 目前来看 b 是横向排的 4 个项,为什么不能合并呢?
 
 a 是 4 行 4 列,对吧。
 
 b 是啥?我们输出 shape 看看:
 
 
 4 代表行数,那么这个数组其实是列向量(纵排)!
 
 所以不能直接和 a 上下拼接。
 
 这个是新手很容易踩的坑。
 
 此时我们使用 reshape 将 b 转为行向量。
 
 代码:
 
 
 然后合并:
 
 
 搞定!
 
 
 更多组合方法
 
 组合有点像拼积木:
 
 
 记住这个口诀,合并时的很多坑都会避开~
 
 那么如果 b 是一个二维数组。
 
 水平左右拼接,只要默认行数相同即可。
 
 例如:
 
 
 通过 np.c_ 将其合并到 a 的右边:
 
 
 左右都可以,但是上下不行。
 
 二维数组变换比一维要复杂一些。
 
 若通过 reshape 方法转为 2*4 数组:
 
 
 主要图中箭头的走向,先把二维数组打“平”,然后按照行列要求依次插入。
 
 这样是数组的重新塑造,有点不符合矩阵变化的规则。
 
 怎么办呢?
 
 我们要用到转置,很简单直接:
 
 
 再来拼到 a 的上面:
 
 
 x.T 比 reshape 用的更多~
 
 除了 np.c 还可以使用 np.column_stack((a,b))。
 
 从名字我们知道也是对列进行叠加,若 a,b 都是一维列,合并变为二维。
 
 行叠加可以使用 np.row_stack((a,b))。
 
 若 a,b 是一维列,会先转换成二维行后合并成二维。
 
 如果你分不清行列向量,就用 shape 查,然后 x.T 或者 reshape 转化。
 
 下一节我们来学习如何拆分数组。
 
 源代码:
  11Merge.zip
(335 Bytes, 下载次数: 0, 售价: 3 鱼币) 
 
 
 
 如果有收获,别忘了评分
  : 
 
 
 
 如果想看更多,请订阅 淘专辑(传送门 )(不喜欢更要订阅   ) | 
 |