查找一个numpy数组的所有n个小数(对,三元组,四元组等)

问题描述 投票:0回答:1

我想编写一个函数,该函数接受整数列表(例如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吗?我希望我想做的事情有意义。似乎函数已经存在,但我似乎找不到任何东西。

python numpy combinations permutation
1个回答
0
投票

通过以下方法创建L的列表,该列表重复n次:[L for _ in range(n)]。然后只需使用星号运算符将此列表取消引用到meshgrid函数即可。 What does the star operator mean, in a function call?

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]])
© www.soinside.com 2019 - 2024. All rights reserved.