在Python中增加矩阵的子集

mal*_*ngi 2 python numpy matrix

我想增加矩阵的一个小的子部分(变量)[下面的说明性代码] - 但是通过循环遍历它们看起来很草率和不优雅 - 我怀疑这是做这个计算的最慢的方法.我的一个想法是创建另一个数组,我想要增加的维度(下面的示例中为2x3),并用零填充此临时数组,因此它与原始尺寸相同.我可以总结一下.

不确定如何完成此填充numpy- 或者如果这是执行此计算的最高效方法?我想尽可能地尝试优化它.

>>> import numpy as np    
>>> a = np.zeros((10,10))
>>> for i in range(3,5):
...     for x in range(4,7):
...         a[i][x] += 1
>>> a
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  1.,  1.,  1.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 7

您可以通过以下方式执行相同操作:

 a[3:5,4:7] += 1
Run Code Online (Sandbox Code Playgroud)