我有一个 3x3 的 0 矩阵和一个 2x2 的 1 矩阵:
a = np.zeros((3, 3), dtype=int)
b = np.ones((2, 2), dtype=int)
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
array([[1, 1],
[1, 1]])
我想从 a
和 b
生成所有可能的矩阵组合,如下所示:
array([[1, 1, 0],
[1, 1, 0],
[0, 0, 0]])
array([[0, 1, 1],
[0, 1, 1],
[0, 0, 0]])
array([[0, 0, 0],
[1, 1, 0],
[1, 1, 0]])
array([[0, 0, 0],
[0, 1, 1],
[0, 1, 1]])
有什么方法可以快速做到这一点吗?我尝试使用for
循环来修改矩阵a
的值,但是相当麻烦。任何帮助将不胜感激。
最佳答案
您可以尝试以下操作:
m1, m2 = 4, 4
n1, n2 = 2, 3
a=np.zeros((m1,m2),dtype=int)
b=np.ones((n1,n2),dtype=int)
d1 = m1 - n1 + 1
d2 = m2 - n2 + 1
for i in range(d1):
for j in range(d2):
temp = a.copy()
temp[i:i+n1,j:j+n2] = b
print(temp)
输出:
[[1 1 1 0]
[1 1 1 0]
[0 0 0 0]
[0 0 0 0]]
[[0 1 1 1]
[0 1 1 1]
[0 0 0 0]
[0 0 0 0]]
[[0 0 0 0]
[1 1 1 0]
[1 1 1 0]
[0 0 0 0]]
[[0 0 0 0]
[0 1 1 1]
[0 1 1 1]
[0 0 0 0]]
[[0 0 0 0]
[0 0 0 0]
[1 1 1 0]
[1 1 1 0]]
[[0 0 0 0]
[0 0 0 0]
[0 1 1 1]
[0 1 1 1]]
适用于所有形状的矩阵。
关于python - 如何根据 python 中提供的 0 和 1 矩阵生成矩阵组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65575502/