我想使用循环制作以下矩阵:
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矩阵。有什么建议 ?感谢
答案 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]]