【问题标题】:All possible combinations of elements of three vectors in PythonPython中三个向量元素的所有可能组合
【发布时间】:2020-01-31 20:20:20
【问题描述】:

我有三个列表,每个列表包含 2 个元素。 如何获得一个 (8x3) 数组,其中包含三个列表中元素的所有可能组合(带替换)?

例子:

vec1 = [4, 6]
vec2 = [2, 4]
vec3 = [1, 5]

output = [[4, 2, 1], [4, 2, 5], [4, 4, 1], [4, 4, 5], [6, 2, 1], [6, 4, 5], [6, 2, 5], [6, 4, 1]]

这是我的代码(简化版):

import scipy.stats as st
percentiles = [0.01, 0.99]
draws1 = st.norm.ppf(percentiles, 0, 1)
draws2 = st.norm.ppf(percentiles, 0, 1)
draws3 = st.norm.ppf(percentiles, 0, 1)

【问题讨论】:

标签: python combinations permutation


【解决方案1】:

你可以像这样使用numpy.meshgrid()

np.array(np.meshgrid([4, 6], [2, 4], [1, 5])).T.reshape(-1,3)

结果:

 array([[4, 2, 1],
       [4, 4, 1],
       [6, 2, 1],
       [6, 4, 1],
       [4, 2, 5],
       [4, 4, 5],
       [6, 2, 5],
       [6, 4, 5]])

【讨论】:

    【解决方案2】:

    您可以使用简单的for 循环:

    import numpy as np
    vec1 = [4, 6]
    vec2 = [2, 4]
    vec3 = [1, 5]
    
    output = np.zeros([8,3])
    counter = 0
    for i in vec1:
        for j in vec2:
            for k in vec3:
                temp = [i,j,k]
                output[counter,:] = [i,j,k]
                counter += 1
    

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 2023-03-29
      • 2023-02-14
      • 2017-04-01
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多