代码之家  ›  专栏  ›  技术社区  ›  Rodrigo Crespo Miguel

在Python中创建矩阵时遇到问题:维度错误

  •  0
  • Rodrigo Crespo Miguel  · 技术社区  · 1 年前

    我在创建矩阵时遇到问题。我期望输出矩阵d20的维数为nt*12 x ny x nx,但我得到了一个维数为nt x ny x nx的矩阵。

    代码(Python)如下所示:

    d20=ma.empty([nt*12,ny,nx]); 
     for k in range(nt):
      ee=time[k]
      files3='thetao_ora20c_1m_' +str(ee) +'_grid_1x1.nc'
      fils3 = nc.Dataset(path+ files3,'r')
      t3=np.array(fils3.variables['thetao'][:,:,:,:])  
      for i in range(nx):
       for j in range(ny):
        for monthit in range(12):
         t3c=t3[monthit,:,j,i] 
         dd = [i for (i, val) in enumerate(t3c[:]) if val >= 19.5 and val <= 20.5]
         if len(dd)==0:
          d20[12*k+monthit,j,i]=0;
         else:
          d20[12*k+monthit,j,i]=dep[dd[0]]
    
    CreateFilenc(d20, 'D20', 'meters', lat, lon, path +'D20_global_1900_2009_ora20c_op.nc')
    

    在这里,我每年都会打开一个不同的文件。时间是一个长度为nt的向量,其中每个元素都是从1900年到2009年的一年。 为什么我得到错误的尺寸?我做错了什么?

    事先非常感谢。

    0 回复  |  直到 1 年前
        1
  •  0
  •   R. C.    1 年前

    什么是“马”?如果您使用numpy,它会起作用:

    >>> import numpy as np   
    >>> nt = 12
    >>> nx = 10
    >>> ny = 20
    >>> d20 = np.empty([nt*12,ny,nx])
    >>> print(d20.shape)
    (144, 20, 10)