鱼C论坛

 找回密码
 立即注册
查看: 11191|回复: 4

numpy中的transpose

[复制链接]
发表于 2015-4-18 14:38:20 | 显示全部楼层 |阅读模式
15鱼币
arr1 = array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
这是原来的矩阵。如果对其进行转置,执行arr2 = arr1.transpose((1,0,2))
得到:array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])
想问下为什么,过程是怎样的?

最佳答案

查看完整内容

我说你来试一下哈: arr1.shape 应该是(2, 2, 4) 意为 2维,2*4矩阵 arr1.transpose(*args) 里面的参数,可以这么理解,他是调换arr1.shape的顺序,咱来给arr1.shape标一下角标哈,(2[0], 2[1], 4[2]) [ ] 里是shape的索引,对吧, transpose((1, 0, 2)) 的意思是 按照这个顺序 重新设置shape 也就是 (2[1], 2[0], 4[2]) 虽然看起来 变换前后的shape都是 2,2,4 , 但是问题来了,transpose是转置 shape按照(1,0,2) ...

本帖被以下淘专辑推荐:

  • · python|主题: 2, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-18 14:38:21 | 显示全部楼层
我说你来试一下哈:
arr1.shape 应该是(2, 2, 4) 意为 2维,2*4矩阵

arr1.transpose(*args) 里面的参数,可以这么理解,他是调换arr1.shape的顺序,咱来给arr1.shape标一下角标哈,(2[0], 2[1], 4[2])  [ ] 里是shape的索引,对吧,
transpose((1, 0, 2)) 的意思是 按照这个顺序 重新设置shape 也就是 (2[1], 2[0], 4[2])

虽然看起来 变换前后的shape都是 2,2,4  , 但是问题来了,transpose是转置
shape按照(1,0,2)的顺序重新设置了, array里的所有元素 也要按照这个规则重新组成新矩阵

比如 8 在arr1中的索引是 (1, 0, 0)  那么按照刚才的变换规则,就是 (0, 1, 0) 看看跟你结果arr2的位置一样了吧,依此类推...

评分

参与人数 2荣誉 +10 鱼币 +10 贡献 +6 收起 理由
chxx8700 + 5 + 5 + 3
qianczar + 5 + 5 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-4-20 22:14:04 | 显示全部楼层
Reed 发表于 2015-4-18 14:38
我说你来试一下哈:
arr1.shape 应该是(2, 2, 4) 意为 2维,2*4矩阵

真是非常感谢,第一次提问就得到了您这么详细的回答,困扰了好几天的问题终于解决了,此刻的心情已经无法用开心来形容了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-7 11:29:12 | 显示全部楼层
秒懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-14 15:35:18 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表