如何用numpy将两个一维数组转换为二维坐标矩阵?
生成numpy数组的笛卡尔积坐标矩阵
你可以用numpy的meshgrid函数结合维度调整来实现这个需求,这是最简便的原生方法:
import numpy as np r = np.array([1, 2, 3]) c = np.array([7, 8, 9]) # 生成网格坐标并转换为目标格式 m = np.array(np.meshgrid(r, c)).T.reshape(-1, 2) print(m)
运行后输出:
[[1 7] [1 8] [1 9] [2 7] [2 8] [2 9] [3 7] [3 8] [3 9]]
原理说明:
np.meshgrid(r, c)会生成两个二维数组,分别对应行坐标的网格(形状为(3,3))和列坐标的网格(形状为(3,3)).T将这两个数组的维度顺序调整,使坐标对按行优先排列reshape(-1, 2)把整个结构重塑为N行2列的数组,每一行就是一组行-列坐标对
如果需要更直观的笛卡尔积实现,也可以用itertools.product,但对于大规模数组,纯numpy方法效率更高:
from itertools import product import numpy as np r = np.array([1, 2, 3]) c = np.array([7, 8, 9]) m = np.array(list(product(r, c)))
内容的提问来源于stack exchange,提问作者Cuteufo
相关产品推荐
相关产品推荐

