栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

NumPy的transpose()方法如何排列数组的轴?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NumPy的transpose()方法如何排列数组的轴?

为了转置数组,NumPy只是交换每个轴的形状和步幅信息。这是大步前进:

>>> arr.strides(64, 32, 8)>>> arr.transpose(1, 0, 2).strides(32, 64, 8)

请注意,转置操作将步幅交换为轴0和轴1。这些轴的长度也被交换了(

2
在本示例中,这两个长度都相同)。

无需复制任何数据即可完成此操作;NumPy可以简单地更改其查看基础内存的方式以构造新数组。


可视化步幅

步幅值表示为了到达数组轴的下一个值而必须在内存中传输的字节数。

现在,我们的3D数组

arr
看起来如下(带有标记的轴):

这个数组存储在一个连续的内存块中;
本质上是一维的。要将其解释为3D对象,NumPy必须跳过一定的恒定字节数才能沿三个轴之一移动:

由于每个整数占用8个字节的内存(我们使用的是int64
dtype),因此每个维度的步幅值是需要跳转的值数的8倍。例如,要沿轴1移动,则要跳过四个值(32字节),而要沿轴0移动,则要跳过八个值(64字节)。

在编写时,

arr.transpose(1, 0, 2)
我们将交换轴0和1。转置后的数组如下所示:

NumPy所需要做的就是交换轴0和轴1的步幅信息(轴2不变)。现在,我们必须跳得更远,才能沿着轴1而不是轴0:

这个基本概念适用于数组轴的任何排列。处理转置的实际代码是用C编写的,可以在这里找到。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号