我有5个阵列,我想重复600次,然后制成一个大阵列
lenE=600
E=array([49.73199462, 49.73799861, 49.74400261, 49.74894938, 49.7500066 ....])
Lat3E=[E]*lenE
我为所有阵列A,B,C,D和E执行此操作.E比其他阵列短。当我尝试组合时,错误是:
lat=np.concatenate((Lat3A,Lat3B,Lat3C,Lat3D,Lat3E))
ValueError: all the input array dimensions except for the concatenation axis must match exactly.
这是因为Lat3E是600个阵列的组合。它看起来像这样:
[array([49.73199462, 49.73799861,....)],array([49.73199462, 49.73799861,....]),array([49.73199462, 49.73799861,...)],...]
如何将这个长600阵列变成一个长数组以使错误消失? 提前谢谢。
答案 0 :(得分:0)
您可以连接多个数组列表,如下所示:
lat = np.concatenate(Lat3A + Lat3B + Lat3C + Lat3D + Lat3E)
np.concatenate
将序列作为输入,因此列表或元组都可以。如果您有多个列表,则需要将它们转换为单个列表,例如使用+
(或者您也可以[*Lat3A, *Lat3B, *Lat3C, *Lat3D, *Lat3E]
,或使用itertools.chain
,...)然后将它传递给函数。
如果所有原始数组都是相同的大小另一种解决NumPy相同问题的方法可能就是:
lens = np.array([lenA, lenB, lenC, lenD, lenE])
lat = np.tile(lens[:, np.newaxis], (1, 600, 1)).reshape((-1,))
答案 1 :(得分:0)
您可以使用Lat3E=[E]*lenE
功能代替np.repeat(E, lenE)
。