You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用NumPy生成所有可能的(x,y)坐标数组?

生成所有整数坐标对的numpy数组

看起来你需要生成一个包含所有0 ≤ i < x0 ≤ j < y的整数坐标对(i,j)的numpy数组,对吧?这里有几种简单高效的实现方式:

方法1:使用np.indices(最简洁)

np.indices可以直接生成多维索引矩阵,我们只需要把它重塑成坐标对的形式:

import numpy as np

x = 2
y = 3
coords = np.indices((x, y)).reshape(2, -1).T
print(coords)

输出结果:

[[0 0]
 [0 1]
 [0 2]
 [1 0]
 [1 1]
 [1 2]]

方法2:使用np.meshgrid

如果你更熟悉网格生成的逻辑,可以用meshgrid配合展平操作:

import numpy as np

x = 2
y = 3

# 用indexing='ij'保证x维度先变化,和示例顺序一致
xx, yy = np.meshgrid(range(x), range(y), indexing='ij')
coords = np.stack([xx.ravel(), yy.ravel()], axis=1)
print(coords)

这个方法会先生成两个分别对应x、y坐标的二维网格,再展平后组合成坐标对数组,结果和上面完全一致。

方法3:结合itertools.product(适合理解笛卡尔积逻辑)

如果你想先从Python基础的笛卡尔积入手,再转成numpy数组,可以用itertools.product

import numpy as np
from itertools import product

x = 2
y = 3
coords = np.array(list(product(range(x), range(y))))
print(coords)

这个方法的逻辑很直观:生成所有x范围和y范围的元素组合,再转成numpy数组,同样能得到符合要求的结果。

以上几种方法生成的坐标顺序可能略有差异,但题目说明顺序无关紧要,所以都能满足你的需求。

内容的提问来源于stack exchange,提问作者user972014

火山引擎 最新活动