查找numpy数组的所有n-let(对、三元组、四元组等)



我想写一个函数,它接受一个整数列表(例如L = [0,1,-1](和一个单个整数(例如n = 3(,并返回该列表的所有(例如三元组(:[0,0,0],[0,0,1],...[-1,-1,-1],其中将有len(L)**n。如果我致力于n=3,我可以做到:

np.array(np.meshgrid(L,L,L)).T.reshape(-1,3)

然而,如果我想把3改成一个不同的数字,我需要在网格中输入我的列表n次。有没有一种巧妙的方法可以适用于任意的n?我希望我想做的事情有意义。这似乎是一个函数已经存在的东西,但我似乎找不到任何东西。

通过:[L for _ in range(n)]创建一个L重复n次的列表。然后只需使用星形运算符将此列表取消引用到meshgrid函数。在函数调用中,星形运算符是什么意思?

n = 2
>>> np.array(np.meshgrid(*[L for _ in range(n)])).T.reshape(-1, n)
array([[ 0,  0],
[ 0,  1],
[ 0, -1],
[ 1,  0],
[ 1,  1],
[ 1, -1],
[-1,  0],
[-1,  1],
[-1, -1]])

最新更新