[英]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.