Python 生成n1'的所有表示;零矩阵中的s

Python 生成n1'的所有表示;零矩阵中的s,python,numpy,Python,Numpy,我正在寻找一种方法来生成n1nxn矩阵的所有组合,所有其他位置都包含0。例如,如果我从一个3x3的零矩阵开始 dim = 3 m = np.zeros((dim, dim), dtype=np.int) 如果n为0,则有1个可能的表示形式 如果n为1,则有9个表示 如果n为2,则有72(9*8)个表示 也就是说,如果n是i,就有(dim*dim)/((dim*dim)-i)!陈述 似乎生成n1的dim*dim矩阵的生成器解决方案采用参数dim和n并生成(dim*dim)/((dim*dim

我正在寻找一种方法来生成n1nxn矩阵的所有组合,所有其他位置都包含0。例如,如果我从一个3x3的零矩阵开始

dim = 3
m = np.zeros((dim, dim), dtype=np.int)
  • 如果n为0,则有1个可能的表示形式
  • 如果n为1,则有9个表示
  • 如果n为2,则有72(9*8)个表示
也就是说,如果n是i,就有(dim*dim)/((dim*dim)-i)!陈述


似乎生成n1的dim*dim矩阵的生成器解决方案采用参数dimn并生成(dim*dim)/((dim*dim)-i)表示。

这是这些类型矩阵的生成器:

import numpy as np
from itertools import combinations

def generate_representations(dim, n, dtype=int):
    assert n <= dim * dim

    for ind in combinations(range(dim * dim), n):
        mat = np.zeros(dim * dim, dtype=dtype)
        if ind:
            mat[np.array(ind)] = 1
        yield mat.reshape(dim, dim)

你的问题是什么?
mats = list(generate_representations(3, 2))
len(mats)
# 36

mats[10]
# array([[ 0.,  1.,  0.],
#        [ 0.,  1.,  0.],
#        [ 0.,  0.,  0.]])