首页 >后端开发 >Python教程 >为什么转置一维 NumPy 数组不会改变其形状?

为什么转置一维 NumPy 数组不会改变其形状?

Susan Sarandon
Susan Sarandon原创
2024-11-11 12:14:03963浏览

Why Does Transposing a 1D NumPy Array Not Change Its Shape?

转置 NumPy 数组:解码一维矩阵行为

处理 NumPy 数组时,了解转置操作的行为至关重要,尤其是对于一维数组。转置一维数组会产生另一个一维数组,这与通常的预期相反。

与转置操作的混淆

考虑以下 NumPy 代码:

import numpy as np
a = np.array([5,4])
print(a)
print(a.T)

在这种情况下,调用 a.T 不会像人们想象的那样转置数组。相反,它会返回未更改的数组。

一维数组转置行为

此行为背后的原因在于 NumPy 中一维数组的基本性质。与 MATLAB 不同,NumPy 不区分一维和二维数组。 NumPy 中的一维数组本质上是一个维度为 (1, n) 的二维数组,其中 n 表示数组的长度。

因此,转置一维数组只是沿一个轴重新排列元素,从而产生维度为 (n, 1) 的二维数组。在给定的示例中,转置操作没有可见的效果,因为数组已经是 (1, 2) 维数组,任何轴旋转都将保持一维数组。

创建一个 2D 数组转置

如果想要的结果是将一维数组转置为二维数组,可以使用 np.newaxis (或等效的 None)来创建额外的维度。

a = np.array([5,4])[np.newaxis]
print(a)
print(a.T)

通过使用 np.newaxis 添加维度,生成的数组将变为 (1, 2) 维数组,从而可以进行适当的转置。

其他见解

中然而,在大多数实际情况下,一维数组的显式转置是不必要的。 NumPy 在计算过程中自动将一维数组广播到更高的维度,无论用户是使用行向量还是列向量进行操作,都对用户透明。

以上是为什么转置一维 NumPy 数组不会改变其形状?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn