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]])