当前位置: 首页 > news >正文

numpy学习笔记5:arr.T 是数组的转置属性详细解释

numpy学习笔记5:arr.T 是数组的转置属性详细解释

在 NumPy 中,.T 是数组的转置属性,用于交换数组的维度顺序。它的行为取决于数组的维度(ndim)。以下是详细解释:


1. 二维数组(矩阵)的转置

对二维数组(矩阵),.T 会交换行和列。

示例
import numpy as np

arr = np.array([[1, 2, 3], 
                [4, 5, 6]])
print("原数组:\n", arr)
print("转置后的数组:\n", arr.T)

输出

复制

原数组:
 [[1 2 3]
 [4 5 6]]

转置后的数组:
 [[1 4]
 [2 5]
 [3 6]]
形状变化
  • 原数组形状:(2, 3)(2 行,3 列)

  • 转置后形状:(3, 2)(3 行,2 列)


2. 一维数组的转置

一维数组的 .T 不会改变形状(因为一维数组只有一个轴)。

示例
arr_1d = np.array([1, 2, 3])
print("原数组:", arr_1d)
print("转置后的数组:", arr_1d.T)

输出

原数组: [1 2 3]
转置后的数组: [1 2 3]
转置一维数组的正确方法

若需要将一维数组转换为列向量,使用 reshape

column_vector = arr_1d.reshape(-1, 1)  # 形状 (3, 1)

3. 高维数组(三维及以上)的转置

对高维数组,.T 默认会反转所有维度的顺序。
更灵活的操作可以通过 np.transpose() 指定轴的交换顺序。

示例(三维数组)
arr_3d = np.arange(24).reshape(2, 3, 4)  # 形状 (2, 3, 4)
print("原数组形状:", arr_3d.shape)
print("转置后的形状:", arr_3d.T.shape)  # 默认反转维度 → (4, 3, 2)
自定义转置顺序

使用 np.transpose(axes) 指定轴的顺序:

# 将形状 (2,3,4) 转为 (3,4,2)
transposed = np.transpose(arr_3d, axes=(1, 2, 0))
print("转置后形状:", transposed.shape)  # (3, 4, 2)

4. 核心特性

(1) 视图(View)而非拷贝
  • .T 返回的是原数组的视图(共享内存),修改转置数组会影响原数组。

    arr = np.array([[1, 2], [3, 4]])
    arr_T = arr.T
    arr_T[0, 1] = 100  # 修改转置数组
    print("原数组:\n", arr)  # 输出 [[1, 2], [100, 4]]
(2) 内存布局
  • 转置后的数组可能不再是连续内存(C 顺序),影响计算效率。可通过 .copy() 强制连续存储:

    arr_T_contiguous = arr.T.copy()

5. 应用场景

(1) 矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
result = A @ B.T  # 计算 A 和 B 转置的矩阵乘法
(2) 数据重塑
# 将图像数据 (高度, 宽度, 通道) 转为 (通道, 高度, 宽度)
image = np.random.rand(256, 256, 3)
image_transposed = image.transpose(2, 0, 1)
(3) 数学运算
# 计算协方差矩阵(需转置数据矩阵)
data = np.random.rand(100, 5)  # 100 个样本,5 个特征
covariance = np.cov(data.T)    # 形状 (5, 5)

6. 对比其他函数

操作说明示例
.T转置所有维度(反转轴顺序)arr_3d.T → 反转维度顺序
np.transpose()自定义轴的交换顺序np.transpose(arr, (1,0,2))
reshape()改变形状但不重新排列数据arr.reshape(3, 2)

总结

  • 二维数组.T 直接交换行和列。

  • 高维数组:默认反转所有维度顺序,需 np.transpose() 灵活控制。

  • 一维数组:转置无意义,需用 reshape 转换为行/列向量。

相关文章:

  • AI学习——卷积神经网络(CNN)入门
  • 计算机网络-网络接入技术
  • 【图像处理基石】什么是HDR图片?
  • Git 分支使用规范全解(多人协作开发适用)
  • 火星探测发展概述2025.3.20
  • JAVA序列化与反序列化URLDNS链CC1链
  • 【初学者】谈谈ChatGPT使用的算法?
  • IMX8MP Android 10系统编译SDK
  • LeetCode 30 —— 30.串联所有单词的子串
  • MobaXterm(远程终极工具箱) v25.1 Build 5288 汉化绿色版
  • Rust语言介绍和猜数字游戏的实现
  • Flink集群部署
  • 集装箱箱号OCR识别技术,在铁路物流场站集装箱装卸机械数字化系统中的应用
  • 高级java每日一道面试题-2025年3月05日-微服务篇[Eureka篇]-Eureka在微服务架构中的角色?
  • nginx keepalive设置失效k6显示i/o timeout解决方案
  • Redis项目:秒杀业务(优化)
  • 知识蒸馏:让大模型“瘦身”的魔法
  • LiteratureReading:[2016] Enriching Word Vectors with Subword Information
  • Mac:Maven 下载+安装+环境配置(详细讲解)
  • 过往记录系列 篇四:年报月行情历史梳理
  • 李在明涉嫌违反《公职选举法》案将于5月1日宣判
  • 专业竞演、剧场LIVE直播,32位越剧新星逐梦上海
  • 暴涨96%!一季度“中国游中国购”持续升温,还有更多利好
  • 格力电器去年净利增长一成:消费电器营收下滑4%,一季度净利增长26%
  • 伊朗港口爆炸已造成281人受伤
  • 价格周报|猪价继续回暖:二次育肥热度仍存,对猪价仍有一定支撑