gpt4 book ai didi

python - 在 block 矩阵中排列 numpy 数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:57 24 4
gpt4 key购买 nike

我有 3 个 numpy 数组 ABC。为简单起见,我们假设它们都是形状 [n, n]。我想把它们排列成一个 block 矩阵

A    B
B^t C

其中 B^t 应表示 B 的转置。当然,我可以通过一系列串联来做到这一点

top_row = np.concatenate([A, B], axis=1)
bottom_row = np.concatenate([B.transpose(), C], axis=1)
result = np.concatenate([top_row, bottom_row], axis=0)

有没有更简单、更易读的方法?

最佳答案

从 NumPy 1.13 开始,有 np.block .这会从嵌套的 block 列表中构建矩阵,但它也更通用,可以处理更高维的数组和某些不太网格的情况。与 bmat 不同,它还会生成一个 ndarray。

np.block([[A, B], [B.T, C]])

对于以前的版本,您可以使用 NumPy 内置的 np.bmat非常适合这样的任务,就像这样 -

np.bmat([[A, B], [B.T, C]])

comments by @unutbu 中所述,请注意输出将是一个 NumPy 矩阵。如果预期的输出是一个数组,我们需要转换它,就像这样 -

np.asarray(np.bmat([[A, B], [B.T, C]]))

np.bmat([[A, B], [B.T, C]]).A

关于python - 在 block 矩阵中排列 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38108335/

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