笛卡尔积
-
两个数据的笛卡尔积是:两个数据组合的所有可能性
-
多个数据的笛卡尔积是:多个数据元素相互组合的所有可能性
示例代码
import numpy as np
import pandas as pd
def cal_cartesian_coord_1(values):
import itertools
cart = [d for d in itertools.product(*values)]
return cart
def cal_cartesian_coord_2(values):
mesh = np.meshgrid(*values)
cart = np.array(mesh).T.reshape(-1, len(values))
return cart
def cal_cartesian_coord_3(arrays):
grid = np.meshgrid(*arrays)
coord_list = [entry.ravel() for entry in grid]
points = np.vstack(coord_list).T
return points
if __name__ == '__main__':
my_list = [
[1, 2, 3],
[3],
[3, 5],
[1, 2]
]
# my_list = tuple(my_list) # 可以是tuple格式
# my_list = np.array(my_list) # 可以是ndarry格式
my_list = pd.Series(my_list) # 可以是series格式
# 笛卡尔积:三种方法
cal_1: list = cal_cartesian_coord_1(my_list)
cal_2: np.ndarray = cal_cartesian_coord_2(my_list)
cal_3: np.ndarray = cal_cartesian_coord_3(my_list)
参考文章
- Cartesian product of x and y array points into single array of 2D point:https://stackoverflow.com/questions/11144513/cartesian-product-of-x-and-y-array-points-into-single-array-of-2d-points