猿问

Numpy:x和y数组点的笛卡儿乘积成二维点的单个数组

Numpy:x和y数组点的笛卡儿乘积成二维点的单个数组

我有两个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数组并不是最有效的形式。


白衣非少年
浏览 2274回答 3
3回答

慕森王

>>> 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]])看见使用numpy构建两个数组的所有组合的数组关于计算N个数组的笛卡儿乘积的一般解。

狐的传说

您可以在python中进行正常的列表理解。x = numpy.array([1,2,3])y = numpy.array([4,5])[[x0, y0] for x0 in x for y0 in y]这应该给你[[1, 4], [1, 5], [2, 4], [2, 5], [3, 4], [3, 5]]
随时随地看视频慕课网APP

相关分类

Python
我要回答