2

我是 Python 世界的新移民。我需要弄清楚如何在 Python 中将矩阵复制到更大的矩阵。让我用 Matlab 中的一个例子来说明这一点:

A = randn(4,4);
B = eye(2,2);
A(1:2,1:2) = B

A = 

 1.0000          0     3.5784     0.7254
      0     1.0000     2.7694   - 0.0631
-2.2588   - 0.4336   - 1.3499     0.7147
 0.8622     0.3426     3.0349   - 0.2050  

我正在尝试使用 Python 以以下方式使用 NumPy 进行类似的操作。

A = np.random.randn(4,4)
B = np.eye(2,2)
A[0:1,0:1] = B

ValueError: output operand requires a reduction, but reduction is not enabled.

当然,避免这种情况的最简单方法是使用循环,但我希望将其保持矢量化。

有人可以指出我在不使用 for 循环的情况下执行此操作的方法吗?

4

1 回答 1

4

这是问题所在:

A[0:1,0:1] = B

你要:

A[0:2,0:2] = B

为什么?因为 Python 使用半开范围。所以切片[0:1]是半开范围[0, 1),意味着只是索引0;切片[0:2]是半开范围[0, 2),表示索引01

于 2012-12-05T21:25:15.767 回答