转置 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中文网其他相关文章!