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