numpy中的元素级连接

numpy中的元素级连接,numpy,concatenation,vectorization,Numpy,Concatenation,Vectorization,我试图按元素连接两个数组。我有串联工作,以产生正确的形状,但它还没有被应用到元素方面 所以我有这个数组 [0, 1] [2, 3] [4, 5] 我想用每个元素附加数组中的每个元素。目标结果将是 [0, 1, 0, 1] [0, 1, 2, 3] [0, 1, 4, 5] [2, 3, 0, 1] [2, 3, 2, 3] [2, 3, 4, 5] [4, 5, 0, 1] [4, 5, 2, 3] [4, 5, 4, 5] 我想我可能需要改变一个轴,但这样我就不能让广播工作了 任何帮助都

我试图按元素连接两个数组。我有串联工作,以产生正确的形状,但它还没有被应用到元素方面

所以我有这个数组

[0, 1]
[2, 3]
[4, 5]
我想用每个元素附加数组中的每个元素。目标结果将是

[0, 1, 0, 1]
[0, 1, 2, 3]
[0, 1, 4, 5]
[2, 3, 0, 1]
[2, 3, 2, 3]
[2, 3, 4, 5]
[4, 5, 0, 1]
[4, 5, 2, 3]
[4, 5, 4, 5] 
我想我可能需要改变一个轴,但这样我就不能让广播工作了

任何帮助都将不胜感激。在numpy有很多东西要学

a = np.arange(6).reshape(3, 2))
b = np.concatenate((a, a), axis=1)

一种方法是堆叠使用
np.repeat
np.tile
-

In [52]: n = len(a)

In [53]: np.hstack((np.repeat(a,n,axis=0),np.tile(a,(n,1))))
Out[53]: 
array([[0, 1, 0, 1],
       [0, 1, 2, 3],
       [0, 1, 4, 5],
       [2, 3, 0, 1],
       [2, 3, 2, 3],
       [2, 3, 4, 5],
       [4, 5, 0, 1],
       [4, 5, 2, 3],
       [4, 5, 4, 5]])
另一个是
广播作业
,因为您提到了
广播
-

def create_mesh(a):
    m,n = a.shape
    out = np.empty((m,m,2*n),dtype=a.dtype)
    out[...,:n] = a[:,None]
    out[...,n:] = a
    return out.reshape(-1,2*n)

一种解决方案是在senderle的基础上将其扩展到2D阵列。我通常是这样做的:

# Your input array.
arr    
# array([[0, 1],
#        [2, 3],
#        [4, 5]])

idxs = cartesian_product(*[np.arange(len(arr))] * 2)
arr[idxs].reshape(idxs.shape[0], -1)    
# array([[0, 1, 0, 1],
#        [0, 1, 2, 3],
#        [0, 1, 4, 5],
#        [2, 3, 0, 1],
#        [2, 3, 2, 3],
#        [2, 3, 4, 5],
#        [4, 5, 0, 1],
#        [4, 5, 2, 3],
#        [4, 5, 4, 5]])