给定一个整数,k我如何创建一个包含序列1to的所有可能排列的排列矩阵k?例如,让我们考虑一下k=2. 然后我想创建矩阵:
1 2
2 1
Run Code Online (Sandbox Code Playgroud)
和对于k=3:
1 1 2 2 3 3
2 3 1 3 1 2
3 2 3 1 2 1
Run Code Online (Sandbox Code Playgroud)
我尝试过使用,numpy.random.permutation但这只会产生一个排列。因此,我可以继续使用这个函数,附加唯一的排列,直到列数等于,k!但这似乎效率非常低。
基于这个答案:
import numpy as np
import itertools as it
import math
def myPerms(k):
f_k=math.factorial(k)
A=np.empty((k,f_k))
for i,perm in enumerate(it.permutations(range(k))):
A[:,i] = perm
A+=1
return A
print(myPerms(3))
#[[ 1. 1. 2. 2. 3. 3.]
# [ 2. 3. 1. 3. 1. 2.]
# [ 3. 2. 3. 1. 2. 1.]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12764 次 |
| 最近记录: |