What should happen with 4d or higher?
octave:7> x=randn(25,25,25,25); octave:8> size(x(:,:)) ans = 25 15625
Your (:,:) reduces it to 2 dimensions, combining the latter. The last dimension is where MATLAB automatically adds and collapses dimensions.
In [605]: x=np.ones((25,25,25,25)) In [606]: x.reshape(x.shape[0],-1).shape
Your reshape example does something different from MATLAB, it just collapses the last 2. Collapsing it to two dimensions, such as MATLAB, is a simpler expression.
MATLAB is concise simply because your needs match its assumptions. The numpy equivalent is not so brief, but gives you more control
For example, to save the last measurement or combine dimensions 2 by 2:
In [608]: x.reshape(-1,x.shape[-1]).shape Out[608]: (15625, 25) In [610]: x.reshape(-1,np.prod(x.shape[-2:])).shape Out[610]: (625, 625)
What is equivalent to MATLAB?
octave:24> size(reshape(x,[],size(x)(2:end))) ans = 15625 25 octave:31> size(reshape(x,[],prod(size(x)(3:end))))