不二如是 发表于 2020-2-18 21:20:46

15 - 高维度转置和轴转换|【苦涩】

本帖最后由 不二如是 于 2020-2-19 22:53 编辑

上一讲我们用小师妹的照片理解了数组的堆叠和拆分,本次学习转置和轴对换。

有言在先,概念多一些,比较容易不想看...



我们之前讲的维度,在 NumPy 中通过 axis(轴)来衡量。

上一讲的方式,对应图右边的操作。

而还有一种三维合并方式,就是图左。

图左和图右的转就涉及到了转置和轴转换。

关键点:
**** Hidden Message *****

图看完,我们上代码。

导入 NumPy 库,然后新建 3 个数组:


接下来用 stack 合并 a1,a2,a3:


注意图中箭头所指,是 (()) 哦!

然后用深度堆叠合并:


看出二者有什么区别了吗?

没错就是一开始图里的区别。

我们可以通过 transpose 将 b1 转为 b2。

先看理解轴的玩法,看默认轴顺序下的值:


(a,b,c)代表三维的轴,0,1,2 的值代表 axis 轴。

如果想变成 b2 需要换轴,改为 1,2,0(想像成立方体旋转,轴方向不变):


是不是一样了呢,不懂的话对照一开始图中的轴顺序。

可以通过 == 判断旋转后的是否和 b2 相同:


全 True,意味着相同!


三维数组的转置

在11 - 合并函数的小坑须知|【常用方法】介绍了转置。

对于二维:

a = a
对于三维:

b = b
如果你没理解上面的红色字的旋转,那就硬记。

实现上面的概念就要用到 swapaxes 方法。

结合上面的例子,我们先看 b1.swapaxes(1,2):


交换 1 轴和 2 轴的位置,用 transpose 就是 0 不需要变,改动后两位:


记住一般形状的改变都是“视图”。

下一讲我们来看快速创建指定数组。

源代码:



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

如果想看更多,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

zltzlt 发表于 2020-2-19 09:55:45

沙发{:10_256:}

ski_magicboy 发表于 2020-2-20 08:54:24

后悔没学好数学,头大

TCY 发表于 2020-2-20 17:08:36

越来越难啦,好喜欢

tjuwlb 发表于 2020-3-8 11:23:05

越来越难啦,好喜欢

听风夜雨 发表于 2020-4-5 08:14:48

越来越难啦,好喜欢

zsygsnbfsdm 发表于 2020-7-4 14:38:17

越来越难啦,好喜欢

卡卡尼西亚 发表于 2020-7-24 10:26:55

越来越难啦,好喜欢

sdohurt 发表于 2021-11-22 10:50:09

越来越难啦,好喜欢

Tikooy 发表于 2023-10-22 16:52:21

越来越难啦,好喜欢
页: [1]
查看完整版本: 15 - 高维度转置和轴转换|【苦涩】