在Python中使用for循环的二维矩阵

时间:2017-01-28 16:49:51

标签: python arrays loops numpy matrix

我想使用循环制作以下矩阵:

matrix = [[x - 3 , y - 3], [ x - 2 , y - 3], [x - 1, y - 3], [ x , y - 3],
               [x - 3, y - 2], [x - 2, y - 2], [x - 1, y - 2], [x, y - 2],
               [x - 3, y - 1], [x - 2, y - 1], [x - 1, y - 1], [x, y - 1],
               [x - 3, y], [x - 2, y ], [x - 1, y ], [x, y],
               [x - 3, y + 1], [x - 2, y + 1], [x - 1, y + 1], [x, y + 1],
               [x - 3, y + 2], [x - 2, y + 2], [x - 1, y + 2], [x, y + 2],
               [x - 3, y + 3], [x - 2, y + 3], [x - 1, y + 3], [x, y + 3]]

这样,如果我想将常数从3增加到5或任何数字,它会相应地自动创建该矩阵。它是7x4矩阵。有什么建议 ?感谢

2 个答案:

答案 0 :(得分:3)

这是np.meshgrid -

的方法
int main(){
    int i=2;
    for(i=0;i<=3;i++){
        static int i;
        i=i+8;
    }

    printf("%d",i);
}

示例输入,输出 -

r,c = np.ogrid[x-3:x+1, y-3:y+4]
out = np.dstack(np.meshgrid(r,c))

您还可以使用可生成In [114]: x,y = 0,0 In [115]: out.tolist() # Showing as list Out[115]: [[[-3, -3], [-2, -3], [-1, -3], [0, -3]], [[-3, -2], [-2, -2], [-1, -2], [0, -2]], [[-3, -1], [-2, -1], [-1, -1], [0, -1]], [[-3, 0], [-2, 0], [-1, 0], [0, 0]], [[-3, 1], [-2, 1], [-1, 1], [0, 1]], [[-3, 2], [-2, 2], [-1, 2], [0, 2]], [[-3, 3], [-2, 3], [-1, 3], [0, 3]]] X's交换的np.mgrid -

Y's

答案 1 :(得分:1)

这是另一种方法:

>>> def compute(x,y):
...     return [[x+j, y+i] for i in range(-3,4) for j in range(-3,1)]
...
>>> print compute(0,0)
[[-3, -3], [-2, -3], [-1, -3], [0, -3], [-3, -2], [-2, -2], [-1, -2], [0, -2], [-3, -1], [-2, -1], [-1, -1], [0, -1], [-3, 0], [-2, 0], [-1, 0], [0, 0], [-3, 1], [-2, 1], [-1, 1], [0, 1], [-3, 2], [-2, 2], [-1, 2], [0, 2], [-3, 3], [-2, 3], [-1, 3], [0, 3]]