Python关于numpy.transpose函数详细解析附代码

目录

前言

transpose这个函数在数据处理、深度学习机器学习等方面都有很大的使用
今天专门研究下这个函数

  1. transpose函数

主要的功能时将其维度转换

源码中的函数为:

@overload
def transpose(self: _ArraySelf, axes: None | _ShapeLike, /) -> _ArraySelf: ...

@overload
def transpose(self: _ArraySelf, *axes: SupportsIndex) -> _ArraySelf: ...

参数如下:

  • 参数为ArraySelf,自身数组
  • axes为维度尺度

具体有如下两种定义的方式:

import numpy as np
x = np.arange(15).reshape(3,5)
y = np.transpose(x,(1,0))
print(y)

或者

import numpy as np
x = np.arange(15).reshape(3,5)
y = x.transpose(1,0)
print(y)

不可有这样的代码(因为原本的x改变了没被存储到)

import numpy as np
x = np.arange(15).reshape(3,5)
x.transpose(1,0)
print(x)

如下的参数不可取

  1. 数据只能限定在维度的尺寸内
    不然会出现如下错误: numpy.AxisError: axis 3 is out of bounds for array of dimension 2
    截图如下:
    Python关于numpy.transpose函数详细解析附代码
  2. 维度不可重复,毕竟没有同纬度且少一个维度的数据
    不然会出现如下错误: ValueError: repeated axis in transpose
    截图如下:
    Python关于numpy.transpose函数详细解析附代码
  3. 维度不可少,毕竟不能输出残缺的数组维度
    不然会出现如下错误: ValueError: axes don't match array
    截图如下:

    Python关于numpy.transpose函数详细解析附代码
  4. 实例

通过实例代码可以更深入的了解

二位数组中就是将其x与y(横竖)进行转换
对应代码如下:

import numpy as np

if __name__ == '__main__':
    x = np.arange(15).reshape(3,5)
    print(x)
    y = x.transpose(1,0)
    print(y)

截图如下:

Python关于numpy.transpose函数详细解析附代码
如果中间的核心代码修改如下
  • 通过 y = x.transpose(0,1)还是本身
  • 通过 y = x.transpose()等同于 y = x.transpose(1,0)

以上都是二维中的变换

如果是三维中进行转换
就是x,y,z轴,将其轴进行交换,维度不变,数组内容变了而已
数学层面的理解通过维度转换如下:

import numpy as np

if __name__ == '__main__':
    x = np.arange(16).reshape((2,2,4))
    print(x)

输出如下:

B:\test1\Scripts\python.exe B:/pycharm_test_code/test1/test.py
[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]]

截图如下:

Python关于numpy.transpose函数详细解析附代码

如果对应的轴进行变化,通过维度输出查看:(对应进行交换)
第一个【】0维
第二个【】1维
第三个【】2维

import numpy as np

if __name__ == '__main__':
    x = np.arange(16).reshape((2,2,4))
    y = x.transpose((1,0,2))

    print(y[0][0][0] , y[0][0][1] ,y[0][0][2] ,y[0][0][3])
    print(y[0][1][0], y[0][1][1], y[0][1][2], y[0][1][3])
    print(y[1][0][0] , y[1][0][1] ,y[1][0][2] ,y[1][0][3])
    print(y[1][1][0], y[1][1][1], y[1][1][2], y[1][1][3])

输出如下:

B:\test1\Scripts\python.exe B:/pycharm_test_code/test1/test.py
0 1 2 3
8 9 10 11
4 5 6 7
12 13 14 15

截图如下:

Python关于numpy.transpose函数详细解析附代码

Original: https://blog.csdn.net/weixin_47872288/article/details/127010872
Author: 码农研究僧
Title: Python关于numpy.transpose函数详细解析附代码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762096/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Pandas数据清理,看这一篇就够了

    作者介绍 @吃货第一名的Claire 美国德克萨斯大学奥斯汀分校商学院硕士; 美国某物流公司数据分析师; 负责数据收集、清理、分析、建模、可视化等; 美剧重度爱好者,坚信美食能解决…

    Python 2023年8月20日
    045
  • 给程序员的Web3入门指南

    上海疫情,在家封了快三个月。居家办公也有好处,省去了通勤,业余时间多出来一块,可以研究一些自己感兴趣的东西。于是陆陆续续看了快两个月的Web3,买了自己的ENS,人生中第一个NFT…

    Python 2023年9月27日
    066
  • YOLOX改进之添加ASFF

    文章内容:如何在YOLOX官网代码中添加 ASFF模块 环境:pytorch1.8 修改内容: (1)在 PAFPN尾部添加ASFF模块( YOLOX-s等版本) (2)在 FPN…

    Python 2023年10月27日
    038
  • python date2num_如何获取matplotlib的date2num值

    import numpy as np class _UTC(datetime.tzinfo): def utcoffset(self, dt): return datetime.t…

    Python 2023年9月6日
    054
  • pyqt5+matplotlib绘图

    1. 整体界面设计 使用Qt Designer进行界面的设计,使用 栅格布局方式:简单介绍这个界面:主要包括了四个模块儿:1. LineEdit:单行文本用来显示文字2. Tool…

    Python 2023年9月3日
    082
  • Torch 模型 onnx 文件的导出和调用

    Open Neural Network Exchange (ONNX,开放神经网络交换) 格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移 Torch 所定义…

    Python 2023年10月27日
    062
  • python重命名_python实现文件重命名

    学院要收集同学们的照片,由于某些原因,我收集到的照片的文件名为同学们的名字,然而学院要求用学号加姓名命名,所以我又来用python偷懒了,虽然debug了一下午。如下: impor…

    Python 2023年8月22日
    062
  • 复习的时间安排篇(参考)

    考研全年具体流程 准备阶段:大三上学期,搜集考研信息和资料,确定好报考的专业和学校基础阶段:3月-5月,开启第一轮复习,打基础知识框架,主要复习英语数学专业课提高阶段:6月-8月,…

    Python 2023年6月11日
    071
  • 跟苏朗写游戏(4)

    前言 我们这个游戏已经要接近尾声了,上次我们做了游戏主角色并让他移动,今天我们要增加敌方车辆。 教程与代码 生成车辆 先上代码 import pyglet as pclass ca…

    Python 2023年9月20日
    021
  • Python网络编程(六)-利用Flask web框架开发python web程序

    1. Flask简介: 在前面介绍了一些基本的网络编程和爬虫python库后,终于可以开始接触python网络编程框架了。 Flask是一个微型的Python开发的 Web 框架,…

    Python 2023年8月13日
    053
  • python+uvicorn+fastapi (一) – 认识与第一个DEMO

    使用python的同学,有没有因为不知道用什么接口来测试自己的代码而郁闷?这里我们使用 python+uvicorn+fastapi来写一些接口DEMO,DEMO中的接口可能包含f…

    Python 2023年8月4日
    055
  • Python数据分析步骤(入门学习)

    数据可视化 可清晰有效的解读、传递、解释信息。 在前期数据整理阶段,通过数据可视化模型, 可发现一些数据的问题(如异常值、缺失值等); 后期完成数据建模预测后, 可通过数据可视化来…

    Python 2023年8月31日
    048
  • PHP 精度计算问题(精确算法)

    PHP 中的精度计算问题 当使用 php 中的 +-*/ 计算浮点数时, 可能会遇到一些计算结果错误的问题 这个其实是计算机底层二进制无法精确表示浮点数的一个 bug, 是跨域语言…

    Python 2023年9月28日
    071
  • 纯Python构建上海疫情风险地图探索应用

    Original: https://www.cnblogs.com/123456feng/p/16106638.htmlAuthor: 蚂蚁ailingTitle: 纯Python…

    Python 2023年5月24日
    056
  • 科学计算基础软件包NumPy入门讲座(6):掩码数组

    在科研活动和实际工作中,我们获得的数据集往往是有缺失或被污染的,如卫星上各种载荷的传感器在某一瞬间甚至某一段时间内可能无法记录数据或记录值被干扰。上一节简单介绍了NumPy处理数据…

    Python 2023年8月29日
    045
  • 动手实现深度学习(12): 卷积层的实现与优化(img2col)

    卷积的计算过程网上的资料已经做够好了,没必要自己再写一遍。只把资料搬运到这里: 这里总结一下有padding\stride的卷积操作: 假设,输入大小为(H,W,C),filete…

    Python 2023年10月25日
    050
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球