首页 > 解决方案 > 获取一个 25x2 数组,如下所示(带有坐标的排序列表)

问题描述

我的目标:得到一个像下面这样的 25x2 数组(一个带有坐标的排序列表)

0 0
0 1
0 2
0 3
0 4
1 0
1 1
..
..
4 3
4 4

我的(失败的)解决方案:

import numpy as np
n=5
lis=np.zeros((n*n,2))
for i in range(n):
    for j in range(n):
        print(i,j) # This prints just what I want to have in the array
        lis[j,0]=i
        lis[j,1]=j

输出:

array([[4., 0.],
       [4., 1.],
       [4., 2.],
       [4., 3.],
       [4., 4.],
       [0., 0.],
       [0., 0.],
       ....

标签: pythonnumpymatrix

解决方案


行号只是j. 它必须在每次迭代时增加 1,即使在循环的下一次迭代中j返回。0i

for i in range(n):
    for j in range(n):
        lis[i*n + j, 0] = i
        lis[i*n + j, 1] = j

另一种方法是在 范围内循环n*n,然后使用除法和余数计算索引。

for i in range(n*n):
    lis[i, 0] = i // n
    lis[i, 1] = i % n

推荐阅读