我有两个 numpy 数组,它们定义了网格的 x 和 y 轴。例如:
x = numpy.array([1,2,3])
y = numpy.array([4,5])
我想生成这些数组的笛卡尔积来生成:
array([[1,4],[2,4],[3,4],[1,5],[2,5],[3,5]])
在某种程度上,这并不是非常低效,因为我需要在循环中多次执行此操作。我假设将它们转换为 Python 列表并使用
itertools.product
回到 numpy 数组并不是最有效的形式。
最佳答案
>>> numpy.transpose([numpy.tile(x, len(y)), numpy.repeat(y, len(x))])
array([[1, 4],
[2, 4],
[3, 4],
[1, 5],
[2, 5],
[3, 5]])
见 Using numpy to build an array of all combinations of two arrays用于计算 N 个数组的笛卡尔积的通用解决方案。
关于python - x 和 y 数组点的笛卡尔积转化为单个二维点数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144513/