我觉得我漏掉了一些显而易见的东西。我想要找到arr1(一个1维numpy数组)和arr2(一个2维numpy数组)的行的笛卡尔积。因此,如果arr1有4个元素,arr2的形状为(5,2),则输出应该具有形状(20,3)。 (见下文)
import numpy as np
arr1 = np.array([1, 4, 7, 3])
arr2 = np.array([[0, 1],
[2, 3],
[4, 5],
[4, 0],
[9, 9]])
所需输出为:
arr3 = np.array([[1, 0, 1],
[1, 2, 3],
[1, 4, 5],
[1, 4, 0],
[1, 9, 9],
[4, 0, 1],
[4, 2, 3],
[4, 4, 5],
[4, 4, 0],
[4, 9, 9],
[7, 0, 1],
[7, 2, 3],
[7, 4, 5],
[7, 4, 0],
[7, 9, 9],
[3, 0, 1],
[3, 2, 3],
[3, 4, 5],
[3, 4, 0],
[3, 9, 9]])
我一直在尝试使用transpose和reshape的代码,例如np.array(np.meshgrid(arr1,arr2)),但目前还没有成功。
我希望解决方案可以被泛化,因为我还需要处理像这样的情况:获取一个二维数组(10,2)和一个二维数组(20,5)的行的所有组合,以获得一个输出数组(200,7)。
*len(arr1)
使用了非向量化的元组重复? - Reinderien