我有两个数组A
和B
未知维度,我想沿着第N
th 维连接。例如:
>>> A = rand(2,2) # just for illustration, dimensions should be unknown
>>> B = rand(2,2) # idem
>>> N = 5
>>> C = concatenate((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 2
>>> C = stack((A, B), axis=N)
numpy.core._internal.AxisError: axis 5 is out of bounds for array of dimension 3
这里提出了一个相关的问题。不幸的是,当维度未知时,提出的解决方案不起作用,我们可能必须添加几个新轴,直到获得最小维度N
。
我所做的是用 1 将形状扩展到第N
th 维,然后连接:
newshapeA = A.shape + (1,) * (N + 1 - A.ndim)
newshapeB = B.shape + (1,) * (N + 1 - B.ndim)
concatenate((A.reshape(newshapeA), B.reshape(newshapeB)), axis=N)
例如,使用此代码,我应该能够将 (2,2,1,3) 数组与沿轴 3 的 (2,2) 数组连接起来。
有没有更好的方法来实现这一目标?
ps:按照第一个答案的建议更新。