如何在Python中将矩阵复制到更大的矩阵?

时间:2012-12-05 21:17:44

标签: python matlab numpy

我是最近移植到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  

我正在尝试使用NumPy以类似的方式使用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循环吗?

1 个答案:

答案 0 :(得分:4)

问题在于:

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

你想:

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

为什么呢?因为Python使用半开放范围。因此,切片[0:1]是半开放范围[0, 1),仅表示索引0;切片[0:2]是半开放范围[0, 2),表示索引01