gpt4 book ai didi

python - Numpy:如何将(N,)维向量插入(N,M,D)维数组作为沿D轴的新元素? (N、M、D+1)

转载 作者:行者123 更新时间:2023-12-01 02:04:11 25 4
gpt4 key购买 nike

a 是形状为 (N, M, D) == (20, 4096, 6) 的数组。

b 是形状为 (N,) == (20,) 的数组。

我想将 b 的值插入到 a 中,以便 b 中的每个值都按元素附加到 >Da 中变暗(a 中的第 7 个元素)。

因此,c 将是一个形状为 (20, 4096, 7) 的数组,其中 c[i,:,-1] == b[i] 对于所有 i,并且 c[...,:-1] == a

我知道你可以创建一个新数组并相应地添加值,例如:

N, M, D = a.shape # (20, 4096, 6)
c = np.zeros((N, M, D+1))
c[...,:-1] = a
for i in range(N):
c[i,:,-1] = b[i]

但想知道这里的 numpy 向导是否有一种更巧妙的方法来使用 numpy 操作而不使用中间数组来完成此操作。

最佳答案

b 延伸到 3D 后沿第二个轴复制,然后沿最后一个轴与 a 连接 -

b_rep = np.repeat(b[:,None,None],a.shape[1],axis=1)
out = np.concatenate((a, b_rep,axis=-1)

或者,我们可以使用np.broadcast_to来创建复制版本:

b_rep = np.broadcast_to(b[:,None,None], (len(b), a.shape[1],1)

关于python - Numpy:如何将(N,)维向量插入(N,M,D)维数组作为沿D轴的新元素? (N、M、D+1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com