python - x 和 y 数组点的笛卡尔积转化为单个二维点数组

标签 python numpy cartesian-product

我有两个 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/

相关文章:

python - 有没有一种简单的方法来交换矩阵中的行以在左侧形成单位矩阵

python - 从两个排序数组中取前 10 个元素的最小总和组合

SQL 不等式加入返回的笛卡尔积

php - 制作多个数组的每个组合,而不重复每个数组中的项目

python - 关于使用 skimage 读取 tiff 文件

python - 从 numpy 数组中提取不在索引列表中的元素

python - Python中的多个字符串替换

python - numpy:不能将值分配给子数组吗?

python - 使用 Python 在 Excel 中插入指向本地文件夹的超链接

python - Pandas 在数据帧上合并,同时保持相同的行数