In [741]: queu = np.array([[[0,0],[0,1]]])
In [742]: new_path = np.array([[[0,0],[1,0],[2,0]]])
In [743]: queu
Out[743]:
array([[[0, 0],
[0, 1]]])
In [744]: queu.shape
Out[744]: (1, 2, 2)
In [745]: new_path
Out[745]:
array([[[0, 0],
[1, 0],
[2, 0]]])
In [746]: new_path.shape
Out[746]: (1, 3, 2)
您已经定义了 2 个数组,形状为 (1,2,2) 和 (1,3,2)。如果您对这些形状感到困惑,则需要重新阅读一些基本numpy
介绍。
hstack
,vstack
并append
全部调用concatenate
. 使用 3d 数组只会混淆问题。
在第 2 个轴上连接,一个轴的大小为 2,另一个轴的大小为 3,可以生成 (1,5,2) 数组。(这相当于hstack
)
In [747]: np.concatenate((queu, new_path),axis=1)
Out[747]:
array([[[0, 0],
[0, 1],
[0, 0],
[1, 0],
[2, 0]]])
尝试加入轴 0 (vstack) 会产生错误:
In [748]: np.concatenate((queu, new_path),axis=0)
....
ValueError: all the input array dimensions except for the concatenation axis must match exactly
连接轴为 0,但轴 1 的尺寸不同。因此错误。
您的目标不是有效的 numpy 数组。您可以将它们收集到一个列表中:
In [759]: alist=[queu[0], new_path[0]]
In [760]: alist
Out[760]:
[array([[0, 0],
[0, 1]]),
array([[0, 0],
[1, 0],
[2, 0]])]
或者一个对象 dtype 数组——但那更高级numpy
。