|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 不二如是 于 2020-2-16 21:43 编辑
上一讲我们理解了副本和视图,本讲就里面的合并函数好好说下。
新建 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 鱼币)
如果有收获,别忘了评分 :
如果想看更多,请订阅 淘专辑( 传送门)( 不喜欢更要订阅 ) |
|