如果我有一个k mxn矩阵,并且我将它们堆叠在一起,那么结果是kxmxn还是mxnxk?在numpy它是前者,这是一个共同的惯例吗?
IE,
numpy.array([matrix1, matrix2, matrix3])
将给出(3,x,x)数组
答案 0 :(得分:1)
np.array
并非“堆积”。功能。你所展示的是它如何运作的特殊后果。 numpy
还有concatentate
及其特殊情况hstack
,vstack
和dstack
。其中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)]