在 numpy 中使用 1d 与 2d 向量的性能/标准

blu*_*cat 5 python matlab numpy linear-algebra

是否有将向量表示为 NumPy 中的一维或二维 ndarray 的标准做法?我正在从将向量表示为二维数组的 MATLAB 转移。

Jai*_*ime 4

根据我的经验,一维是 numpy 中向量的标准。将元素向量保留n为二维形状数组(1, n)(n, 1)在线性代数上下文中的唯一充分理由,您希望在其中保持行向量和列向量的差异。正如 EitanT 暗示他现在已删除的答案,您可能会想要使用 numpy 的matrix类型,它保留返回的 2D 形状(除了单个元素访问),例如,如果a具有形状(m, n),则a[0]具有(n,)类型的形状ndarray,但(1, n)类型的 形状matrix,尽管a[0, 0]返回标量在这两种情况下。

如果您坚持使用形状 的 1D 向量(n,),则可以针对需要 2D 形状的特定操作动态重塑形状:

a.reshape(-1, 1) # shape (n, 1)
a[:, None] # shape (n, 1)
a.reshape(1, -1) # shape (1, n)
a[None, :] # shape (1, n)
Run Code Online (Sandbox Code Playgroud)

(1, n)Numpy 会在广播涉及 2D 数组的操作时自动重塑您的 1D 向量。