将k矩阵堆叠在一起的惯例是k-by -..- by ..或..- by -..- by-k?

时间:2014-11-11 20:04:07

标签: numpy linear-algebra eigen

如果我有一个k mxn矩阵,并且我将它们堆叠在一起,那么结果是kxmxn还是mxnxk?在numpy它是前者,这是一个共同的惯例吗?

IE,

numpy.array([matrix1, matrix2, matrix3])

将给出(3,x,x)数组

1 个答案:

答案 0 :(得分:1)

np.array并非“堆积”。功能。你所展示的是它如何运作的特殊后果。 numpy还有concatentate及其特殊情况hstackvstackdstack。其中2个不添加尺寸,第3个添加尺寸。

np.array的行为与np.concatenate([matrix1[None,...], matrix2[None,...]])相似。我认为,这是更广泛倾向于根据需要预先维度维度的结果,例如

np.array(matrix1, ndim=3)  # (1,x,x) shape

在MATLAB / Octave中,

[matrix1, matrix2, matrix3]  # like np.hstack
cat(2, matrix1, matrix2, matrix3]   # also horzcat
[matrix1;matrix2]  # np.vstack
cat(1, matrix1 ...)  # also vertcat
cat(3, matrix1 ...)  # like np.dstack

最后添加维度对Octave来说很自然。在Octave中,在开始时添加维度更加尴尬。我能想到的最好的是

[reshape(matrix1,1,x,x); reshape(matrix2,1,x,x)]