繁体   English   中英

如何在 Python 中为数组的第二维添加零?

[英]How to Add Zeros to Second Dimension of Array in Python?

我有一个形状为 (1111,) 的纬度数组,我正在尝试使用 matplotlib pcolormesh,但是由于我的数组不是 2D,我收到一个错误,所以我收到的错误not enough values to unpack (expected 2, got 1) 有没有办法可以将 1111 个零添加到纬度数组的第二维? 下面是我拥有的导致错误的代码。

import matplotlib.cm as cm

cmap = cm.get_cmap('BrBG')

cs = plt.pcolormesh(longitude.values, latitude.values, dens, cmap = cmap)

plt.title('Satellite Trajectory')
plt.xlabel('Longitude')
plt.ylabel('Latitude')

plt.savefig('Satellite Trajectory', dpi=200, bbox_inches='tight', pad_inches=0.025)

cb = plt.colorbar(cs, orientation = 'vertical')
cb.set_label(r'Density')

这些是我的 Pandas 纬度数组的前几行:

0       50.224832
1       50.536422
2       50.847827
3       51.159044
4       51.470068
5       51.780895
6       52.091521
7       52.401941
8       52.712151
9       53.022145
10      53.331919

我对经度数组也有同样的问题。 这里有一些经度值供参考。

0       108.873007
1       108.989510
2       109.107829
3       109.228010
4       109.350097
5       109.474136
6       109.600176
7       109.728265
8       109.858455
9       109.990798
10      110.125348

显示的另一个阵列是 dens,它是一个密度阵列,形状为 (5, 91, 181)。 这里有几个值供参考:

[6.042968853864891e-12, 6.042894605467602e-12, 6.042777396826408e-12, 6.042616263531836e-12, 6.042410211830538e-12, 6.042158216350682e-12, 6.0361190688090634e-12, 6.038107492458882e-12, 6.039984972063208e-12, 6.041748879958635e-12, 6.030375732644546e-12, 6.027898597657696e-12, 6.0251851962303345e-12, 6.0390021800772395e-12, 6.035096323493865e-12, 6.030879347062723e-12, 6.026343416350273e-12, 6.021480432118012e-12, 6.01628202402901e-12, 6.042274874237314e-12, 6.040409269411221e-1

我只是被困在如何执行 pcolormesh 而不会出现以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-54-685815191229> in <module>
      7 
      8 
----> 9 cs = plt.pcolormesh(longitude.values, latitude.values, dens, cmap = cmap)
     10 
     11 plt.title('Satellite Trajectory')

~\Anaconda3\lib\site-packages\matplotlib\pyplot.py in pcolormesh(alpha, norm, cmap, vmin, vmax, shading, antialiased, data, *args, **kwargs)
   2771         *args, alpha=alpha, norm=norm, cmap=cmap, vmin=vmin,
   2772         vmax=vmax, shading=shading, antialiased=antialiased,
-> 2773         **({"data": data} if data is not None else {}), **kwargs)
   2774     sci(__ret)
   2775     return __ret

~\Anaconda3\lib\site-packages\matplotlib\__init__.py in inner(ax, data, *args, **kwargs)
   1808                         "the Matplotlib list!)" % (label_namer, func.__name__),
   1809                         RuntimeWarning, stacklevel=2)
-> 1810             return func(ax, *args, **kwargs)
   1811 
   1812         inner.__doc__ = _add_data_doc(inner.__doc__,

~\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in pcolormesh(self, alpha, norm, cmap, vmin, vmax, shading, antialiased, *args, **kwargs)
   5980         allmatch = (shading == 'gouraud')
   5981 
-> 5982         X, Y, C = self._pcolorargs('pcolormesh', *args, allmatch=allmatch)
   5983         Ny, Nx = X.shape
   5984         X = X.ravel()

~\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py in _pcolorargs(funcname, allmatch, *args)
   5547                 if isinstance(Y, np.ma.core.MaskedArray):
   5548                     Y = Y.data
-> 5549             numRows, numCols = C.shape
   5550         else:
   5551             raise TypeError(

ValueError: not enough values to unpack (expected 2, got 1)

我假设这是因为经度和纬度数组形状,所以我要求帮助填充第二维,所以我有一个数组 (1111,1111) 而不是 (1111,)。

如果您有其他建议,我很乐意提供帮助。 我是 Python 的新手。

在这种情况下使用 for 循环或列表理解。

latitude = [50.224832, 50.536422, 50.847827, 51.159044, 51.470068]
longitude = [108.873007, 108.989510, 109.107829, 109.228010, 109.350097]
density = [.15,.25,.35,.45,.55]

output = [(latitude[i], longitude[i], density[i]) for i in range(len(latitude))]

print(output)

[(50.224832, 108.873007, 0.15), (50.536422, 108.98951, 0.25), (50.847827, 109.107829, 0.35), (51.159044, 109.22801, 0.45), (51.470068, 109.350097, 0.55)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM