gpt4 book ai didi

python - 用于在 NumPy 中创建 block 矩阵序列的向量化语法

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:07 26 4
gpt4 key购买 nike

我有两个 3D 数组 AB有形状 (k, n, n)(k, m, m)分别。我想创建一个矩阵 C形状(k, n+m, n+m)这样对于每个 0 <= i < k ,二维矩阵 C[i,:,:]是通过输入 A[i, :, :] 得到的 block 对角矩阵在左上角n x n部分和B[i, :, :]右下m x m部分。

目前我正在使用以下方法来实现 NumPy:

C = np.empty((k, n+m, n+m))
for i in range(k):
C[i, ...] = np.block([[A[i,...], np.zeros((n,m))],
[np.zeros((m,n)), B[i,...]]])

我想知道是否有办法在没有 for 的情况下做到这一点环形。我想如果k太大了,我的解决方案效率不是很高。

最佳答案

IIUC 您可以简单地切片和分配 -

C = np.zeros((k, n+m, n+m),dtype=np.result_type(A,B))
C[:,:n,:n] = A
C[:,n:,n:] = B

关于python - 用于在 NumPy 中创建 block 矩阵序列的向量化语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57886285/

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