Python 如何将二维阵列连接到每个三维阵列中?

Python 如何将二维阵列连接到每个三维阵列中?,python,numpy,matrix,concatenation,Python,Numpy,Matrix,Concatenation,我试图将相同的二维数组,A与shape(n,m)连接到三维数组的每个二维数组,B与shape(n,n,k) 我尝试使用堆栈和连接,但由于只有一维匹配,所以无法工作。我尝试了以下示例来测试这个想法: a=np.array([[1]、[2]、[3]]) b=np.一((2,3,4)) np.hstack((a,b)) 我所期待的是以下结果: 数组([[1,1,1,1,1,1.]), [2., 1., 1., 1., 1.], [3., 1., 1., 1., 1.]], [[1., 1., 1.

我试图将相同的二维数组,
A
与shape
(n,m)
连接到三维数组的每个二维数组,
B
与shape
(n,n,k)

我尝试使用堆栈和连接,但由于只有一维匹配,所以无法工作。我尝试了以下示例来测试这个想法:

a=np.array([[1]、[2]、[3]])
b=np.一((2,3,4))
np.hstack((a,b))

我所期待的是以下结果:

数组([[1,1,1,1,1,1.]),
[2., 1., 1., 1., 1.],
[3., 1., 1., 1., 1.]],
[[1., 1., 1., 1., 1.],
[2., 1., 1., 1., 1.],
[3., 1., 1., 1., 1.]])

我知道使用for循环是可能的,但我正在寻找一种更紧凑和优化的解决方案。

我知道这有点混乱,但它可以完成工作

a = np.array([[1],[2],[3]])
b = np.ones((2,3,4))
a=np.expand_dims(a,axis=0)
a=np.concatenate((a,a),axis=0)
np.dstack((a,b))

我知道这有点混乱,但这是完成任务的关键

a = np.array([[1],[2],[3]])
b = np.ones((2,3,4))
a=np.expand_dims(a,axis=0)
a=np.concatenate((a,a),axis=0)
np.dstack((a,b))

您当前有一个
(3,1)
数组,您希望将其预加到
(2,3,4)
数组,就像它被广播到
(2,3,1)一样
。这是您必须自己执行操作的情况之一。如果使用,您将获得一个不复制原始数据的对象,并且至少适合复制到新数组中:

c = np.broadcast_to(a, b.shape[0:1] + a.shape)
result = np.concatenate((c, b), axis=2)

您当前有一个
(3,1)
数组,您希望将其预加载到
(2,3,4)
数组,就像它被广播到
(2,3,1)时一样
。这是您必须自己执行操作的情况之一。如果使用,您将获得一个不复制原始数据的对象,并且至少适合复制到新数组中:

c = np.broadcast_to(a, b.shape[0:1] + a.shape)
result = np.concatenate((c, b), axis=2)

np.concatenate应该是正确的方法。你也可以看看np.hstack或np.vstack。你能提供一个你尝试过的例子吗?你必须将
a
预扩展到你想要的大小。我想你可以使用一个显式调用
broadcast\u to
或So。另外,你的例子与描述不太相符。请解决这个问题。Y您需要首先将
A
扩展到(N,N,m),可能需要使用(1,N,m)中间步骤。平铺或重复可能会有帮助。或者
stack
N
a
np.concatenate的列表应该是正确的方法。您也可以查看np.hstack或np.vstack。您可以提供一个您尝试的示例吗?您必须将
a
预扩展到您想要的大小。我认为您可以使用显式调用
broadcast\u
或So另外,您的示例与描述不太相符。请解决此问题。您需要先将
A
扩展到(N,N,m),可能需要(1,N,m)中间步骤。平铺或重复可能会有所帮助。或者
堆叠
N
A
A的列表