2012-01-20 25 views
0

我有这样的代码在MATLAB:SciPy的从MATLAB,错误转换:数组必须具有相同的维数

ext = [lat(end, :); lat; lat(1, :)]; 
lat = [ext(:, end) ext ext(:, 1)]; 

,我试图做到这一点在SciPy的:

ext = sc.vstack([[lat[-1,:]], [lat], [lat[0,:]]]) 
lat = sc.vstack([[ext[:]], [ext], [ext[:,0]]]) 

但它给我的错误:

ValueError: arrays must have same number of dimensions

和:

return _nx.concatenate(map(atleast_2d,tup),0) --> (in /usr/lib/pymodules... it's the definition of vstack function)

我哪里错了?

回答

1

用户垂直于extlat堆叠和水平。

尝试:

ext = sc.vstack([lat[-1,:], lat, lat[0,:]]) 
lat = sc.hstack([ext[:,-1], ext, ext[:,0]]) 

编辑:

上面的代码,如果lat是原本的矩阵,而不是阵列才有效。如果情况并非如此,则可以通过lat = sc.matrix(lat)转换。另请注意,我删除了hstackvstack参数中的多余方括号。

+0

:你好,还是一样.. – George

+0

:现在完美的感谢! (作为一个数组是很难做到这一点,也可以不?) – George

+0

@George,作为数组你将不得不重塑为hstack中间步骤,为阵列的切片不携带从原来的dimentionality信息。我认为这将更加丑陋。 – foglerit

相关问题