重复数组后连接错误

时间:2018-04-06 12:15:45

标签: python numpy concatenation repeat

我有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阵列变成一个长数组以使错误消失? 提前谢谢。

2 个答案:

答案 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)