numpy中transpose详解

news/2024/11/28 22:53:04/

transpose用于numpy中高维度数组的轴变换,在二维情况下就是通常说的转置。该方法很不好理解,本文详细介绍该方法。

该方法有两个实现,分别是numpy.ndarray.transpose和numpy.transpose,两者分别是类成员方法和独立的方法,接口定义和功能和基本一致。

1. 函数介绍

For a 1-D array, this returns an unchanged view of the original array, as a transposed vector is simply the same vector.

To convert a 1-D array into a 2-D column vector, an additional dimension must be added, e.g., np.atleast2d(a).T achieves this, as does a[:, np.newaxis].

For a 2-D array, this is the standard matrix transpose.

For an n-D array, if axes are given, their order indicates how the axes are permuted (see Examples). If axes are not provided, then transpose(a).shape == a.shape[::-1].

2. 参数说明

axes tuple or list of ints, optional

If specified, it must be a tuple or list which contains a permutation of [0,1,…,N-1] where N is the number of axes of a. The i’th axis of the returned array will correspond to the axis numbered axes[i] of the input. If not specified, defaults to range(a.ndim)[::-1], which reverses the order of the axes.

3. 使用示例

  • 定义数组
arr3d = np.arange(16).reshape((2, 2, 4))
  • 结果

array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

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

  • 换轴操作
arr3d.transpose((1, 0, 2))
  • 结果

array([[[ 0,  1,  2,  3],
        [ 8,  9, 10, 11]],

       [[ 4,  5,  6,  7],
        [12, 13, 14, 15]]])

  • 说明

例子中是一个三维的数组进行了轴变换,arr3d的默认轴顺序是(0, 1, 2)而通过transpose方法换为了(1, 0, 2),所以对应的 空间 中的位置也发生了变换。运行结果只是编译器对于三维数组的一种表达形式,如果单纯的理解为只是将二三行互换了,就很难理解这个方法。

参考文献

numpy.transpose — NumPy v1.24 Manual

numpy数组的转置与换轴transpose和swapaxes方法_Everglow_Vct的博客-CSDN博客 


http://www.ppmy.cn/news/39230.html

相关文章

python字符编码

目录 ❤ 前言 文本编辑器存取文件的原理(nodepad,pycharm,word) python解释器执行py文件的原理 ,例如python test.py 总结 ❤ 什么是字符编码? ASCII MBCS Unicode ❤ 字符编码的发展史 阶段一: 现代计算…

一篇文章看懂C++三大特性——多态的定义和使用

目录 前文 一,什么是多态? 1.1 多态的概念 二, 多态的定义及实现 2.1 多态的构成条件 2.2 虚函数 2.3 虚函数的重写 2.3.1 虚函数重写的两个例外 2.4 C override 和 final 2.5 重载,重写(覆盖),隐藏(重定义)的区别 三,抽…

Pandas高级操作,建议收藏(一)

在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作,有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序的使用。 复杂查询 实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何…

UE4 C++编写自定义动画蓝图节点

UE中自带的动画蓝图节点有限,在实现一些功能时需要通过C编写一些自定义的动画蓝图节点,本文就来讲解其基础实现,自定义节点最终效果如下: 源文件下载:https://download.csdn.net/download/grayrail/87654290 1.流程简…

【华为OD机试真题】猜字谜(javapython)

猜字谜 时间限制:1s空间限制:256MB 限定浯言:不限 题目描述: 小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩 家需要猜出谜底库中正确的单词。猜中的要求如下: 对于某个谜面和谜底单词,满足下面任一条件都表示猜中: 变换顺序以后一样的,…

mac电脑配置adb

1、打开mac的terminal终端,输入 cd ~/ 2、输入 touch .bash_profile,如果没有.bash_profile这个文件,则创建一个这个文件 3、输入 open .bash_profile ,打开创建的.bash_profile 文件,此时应该弹出一个文本编辑框&am…

【问题解决】glob.glob 如何匹配所有子文件夹下的文件 —— recursive=True

一、仅匹配一级目录下的文件 import glob label_dir /data/part1/dir1/*.txt datas glob.glob(label_dir) print(datas) >>> [/data/part1/dir1/001.txt, /data/part1/dir1/002.txt]二、匹配多级文件夹下的文件 glob 模块在 python3.5 之后就支持了匹配所有子文件…

JavaSE基础(18) 继承

继承 概念 生活中我们经常听到一些名词,譬如富二代,官二代,红二代,穷二代,农二代等等,它代表中人与人之间的一种关系。那么程序当中怎么表示这种关系呢? 概念:描述两个类的关系的…