我的目标是将行向量变成列向量,反之亦然。 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
?
答案 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)
这两种方法也都可以换位,并且可以按预期工作。