在Numpy中转置一维数组而不转换为矩阵

时间:2018-11-14 15:47:55

标签: python arrays numpy matrix transpose

我的目标是将行向量变成列向量,反之亦然。 numpy.ndarray.transpose的文档说:

  

对于一维数组,这无效。 (要在列向量和行向量之间切换,请先将一维数组转换为矩阵对象。)

但是,当我尝试此操作时:

my_array = np.array([1,2,3])
my_array_T = np.transpose(np.matrix(myArray))

我确实获得了所需的结果,尽管是矩阵形式(matrix([[66],[640],[44]])),但我也得到了以下警告:

  

PendingDeprecationWarning :不建议使用矩阵子类来表示矩阵或处理线性代数(请参见https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html)。请调整您的代码以使用常规ndarray。

my_array_T = np.transpose(np.matrix(my_array))

那我该如何正确转置ndarray

3 个答案:

答案 0 :(得分:2)

一维数组本身一旦转置,与Matlab相反,后者不存在一维数组且至少为二维数组。

您要重塑它:

my_array.reshape(-1, 1)

或者:

my_array.reshape(1, -1)

取决于要使用的向量类型(列向量或行向量)。

-1类似于广播,使用了所有可能的元素,而1创建了第二个必需的维度。

答案 1 :(得分:1)

IIUC,使用reshape

my_array.reshape(my_array.size, -1)

答案 2 :(得分:1)

如果数组为my_array,并且要将其转换为列向量,则可以执行以下操作:

my_array.reshape(-1, 1)

对于行向量,您可以使用

my_array.reshape(1, -1)

这两种方法也都可以换位,并且可以按预期工作。