【问题标题】:Generation of numpy arrays for permutations with constraints为带有约束的排列生成 numpy 数组
【发布时间】:2020-02-14 18:01:56
【问题描述】:

长话短说,我正在尝试生成一组 numpy 数组的所有可能排列。我有三个数字 [j,k,m],我想为每个数字 [J,K,M] 指定一个最大值。那么我将如何获得这些值下的所有数组组合?我怎么能强制 k 值总是一样好?例如:

因此,将最大值设置为 [1,2,2],排列将是:[0,0,0]、[0,0,1]、[0,0,2]、[0, 2,0], [0,2,1], [0,2,2], [1,0,0], [1,0,1] ...

我意识到我没有任何代码可以展示,但恐怕我真的不知道从哪里开始。

从其他答案看来 sympy 会有用吗?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    我找到了您可能感兴趣的答案here 并对其进行了概括。因此,您可以像这样为每个项目构建可能值的列表:

    X = [[0, 1], [0, 1, 2], [0, 1, 2]]
    

    然后使用:

    np.array(np.meshgrid(*X)).T.reshape(-1, len(X))
    

    输出包含您想要的 18 个项目。实际上,如果你只有最大值[J, K, L],你可以使用X = [range(J+1), range(K+1), range(L+1)]构造X

    【讨论】:

    • 谢谢!这正是使该网站如此出色的专业知识!我认为我的问题有点不清楚,我需要每个数组的中间值是均匀的,但是在不同的站点上使用不同的解决方案我得到了我需要的内容:def permute(j, k, m): a = np.stack([[i, 2*l, n] for i in range(j + 1) for l in range(k + 1) for n in range(m + 1)]) return a
    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2013-06-06
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多