gpt4 book ai didi

python - 如何使用 numpy 将矩阵分成 4 个 block ?

转载 作者:太空狗 更新时间:2023-10-29 20:39:01 27 4
gpt4 key购买 nike

我正在使用 python 实现 Strassen 的矩阵乘法。在划分步骤中,我们将一个较大的矩阵划分为较小的子矩阵。是否有内置的 numpy 函数来拆分矩阵?

最佳答案

根据 this answer ,您可以使用 swapaxes:

您可以创建一个辅助方法:

def split(array, nrows, ncols):
"""Split a matrix into sub-matrices."""

r, h = array.shape
return (array.reshape(h//nrows, nrows, -1, ncols)
.swapaxes(1, 2)
.reshape(-1, nrows, ncols))

这是一个使用它的例子

import numpy as np

array = np.array([
[1, 1, 2, 2],
[3, 3, 4, 4],
[5, 5, 6, 6],
[7, 7, 8, 8]])

A, B, C, D = split(array, 2, 2)
# A =
# [[1 1]
# [3 3]]

# B =
# [[2 2]
# [4 4]]

# C =
# [[5 5]
# [7 7]]

# D =
# [[6 6]
# [8 8]]
print('A = \n{}\n\n'
'B = \n{}\n\n'
'C = \n{}\n\n'
'D =\n{}'.format(A, B, C, D))

关于python - 如何使用 numpy 将矩阵分成 4 个 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105375/

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