Numpy数组的转置和轴交换的实现

 更新时间:2023年03月27日 09:59:06   作者:算力鬼才信  
本文主要介绍了Numpy数组的转置和轴交换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

NumPy 数组在进行转置时不会实际移动内存中的任何数据 位置只是改变对原始矩阵的索引方式 ,比如我原来是行索引现在变为列索引了

转置是一种视图并不是对原数组的复制数组转置拥有transpose方法,也有特殊的T属性

对于numpy数组的转置仅限于一维和二维数组,使用的是 numpy中的T 属性

创建一个0-15的一维数组,并且对它进行了数组重组,变为 2 x 2 x 4的三维数组,并对它进行转置

import  numpy as np
#创建一个三维数组,这个三维数组的形状是 2 x 2 x 4 ,三维数组包括两个二维数组,二维数组中包含两个一维数组,一维数组的数组维度长度是 4
arr = np.arange(16)
arr2 = arr.reshape(4,-1)
arr3 = arr.T
0

我们通过数组的迭代来检查numpy数组的转置是否对原数组位置做了改变,这里我们要引用numpy.nditer() 方法

对原数组进行迭代:

arr = np.arange(16)
arr2 = arr.reshape(4,-1)
for x in np.nditer(arr2): # 需要注意的是for循环的末尾一定要加上 冒号(:)
 print(x,end=" ")

我们对通过 arr2的转置数组arr3做迭代

arr = np.arange(16)
arr2 = arr.reshape(4,-1)
arr3 = arr2.T
for xx in np.nditer(arr3):
 print(xx,end=" ")

可以发现他们的打印结果未发生任何变化,所以可以证实,数组转置并不是改变了原数组的元素位置,只是改变了它的索引方式。

其实我可以告诉你,一个最终结果,原数组和对原数组的转置在内存中是共享数据的,,类似于家里的小狗叫做旺旺 和小黄,其实指的是是一个东西

在这里需要注意的是,在数组转置下对数组作修改一定会影响到原数组

例如:

arr = np.arange(10).reshape(2,5)
arr2 = arr.T
#为了方便理解我上述说的意思,我引用下面的实例
#对arr2中的某一数组作以修改
print(arr)  # 原数组
arr2[2][1] = 200  #在原数组转置后,对其中 某一个元素做修改
print(arr2)  # 打印对原数组转之后的数组
print(arr)   #打印原数组

发现了什么我们最初定义的数组被篡改了,不知道大家对数组的转置和原数组公用一个内存位置的概念的理解是否变得容易

array.transpose() 轴交换

虽然,transpose方法可以实现转置,但是它的真正用途是轴交换,我前面提到.T 方法只适合用于一二数组,三维,四维就要用到transpose()方法。

transpose() 方法中的参数和数组的维度有关,拿三位数组来说共需要三个参数分别是,

transpose(x,y,z)其中的参数分别对应0,1,2,只需要变换轴对应数字参数的顺序就可以将数组进行轴的变换。

原数组对应的参数顺序是,transpose(0,1,2)

import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
print(arr)
arr2 = arr.transpose((0,2,1))  #我在这里改变了列和纵深的顺序
print(arr2)

经过轴交换后arr数组打印结果

这一块比较难于理解,我也是看了好久现在也是马马虎虎,我可以告诉大家一个比较笨的方法

请记住,(x,y,z)或者(0,1,2)分别代表行轴,列轴,纵深轴,transpose 方法是对它们的轴进行了交换。

到此这篇关于Numpy数组的转置和轴交换的实现的文章就介绍到这了,更多相关Numpy数组转置和轴交换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python NumPy灰度图像的压缩原理讲解

    Python NumPy灰度图像的压缩原理讲解

    在本篇文章里小编给大家整理的是一篇关于Python NumPy灰度图像的压缩原理讲解内容,有兴趣的朋友们可以学习参考下。
    2021-08-08
  • Python编程使用NLTK进行自然语言处理详解

    Python编程使用NLTK进行自然语言处理详解

    这篇文章主要介绍了Python编程使用NLTK进行自然语言处理详解,涉及了nltk和开发环境的简单介绍,以及SentencesSegment,SentencesSegment等内容,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python编程中常见的错误及其解决方法总结

    Python编程中常见的错误及其解决方法总结

    在开发 Python 程序时,错误几乎是无法避免的,无论是新手还是经验丰富的开发者,都可能在编程过程中遇到各种各样的问题,调试错误不仅消耗时间,还可能导致生产环境出现问题,为了提高调试效率,本文将总结一些 Python 编程中常见的错误及其解决方法,并提供实用的调试技巧
    2025-02-02
  • Python pyautogui模拟键盘输入操作的示例详解

    Python pyautogui模拟键盘输入操作的示例详解

    在自动化办公和提高工作效率的今天,Python的pyautogui库成为了我们模拟键盘和鼠标操作的得力助手,下面我们看看如何使用pyautogui来模拟键盘输入吧
    2025-03-03
  • windows下python安装paramiko模块和pycrypto模块(简单三步)

    windows下python安装paramiko模块和pycrypto模块(简单三步)

    这篇文章主要给大家介绍了通过简单的三个步骤在windows下python中安装paramiko模块和pycrypto模块的相关资料,文中安装的步骤,简单而且又易于大家理解,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-07-07
  • python进阶之JSON数据解析完整示例

    python进阶之JSON数据解析完整示例

    Python作为一种强大的编程语言,提供了多种方法来处理JSON数据,使其在数据解析、处理和生成方面变得异常简便,这篇文章主要介绍了python进阶之JSON数据解析的相关资料,需要的朋友可以参考下
    2025-12-12
  • python清除PDF文件中水印的项目实践

    python清除PDF文件中水印的项目实践

    本文主要介绍了python清除PDF文件中水印的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Python调用ChatGPT API接口的用法详解

    Python调用ChatGPT API接口的用法详解

    ChatGPT可以实现chat,生成图片,识别关键,改错等等功能,本文简单的给大家介绍一下如何使用python调用ChatGPT API接口,感兴趣的小伙伴可以参考一下
    2023-05-05
  • Python Map 函数的使用

    Python Map 函数的使用

    这篇文章主要介绍了Python Map 函数的使用,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Django框架中render_to_response()函数的使用方法

    Django框架中render_to_response()函数的使用方法

    这篇文章主要介绍了Django框架中render_to_response()函数的使用方法,注意范例中该方法的参数的使用,需要的朋友可以参考下
    2015-07-07

最新评论