【问题标题】:how to execute a function more than once and concatenate its outputs into an array only in python如何在python中多次执行一个函数并将其输出连接到一个数组中
【发布时间】:2021-04-02 13:24:13
【问题描述】:

我正在尝试创建一个函数,该函数调用我已经必须执行 N 次的函数,然后在其数组中仅连接其输出。这是我想要多次执行的功能。

def r_sample(m_base, m_external):
    n_linhas_m_base = m_base.shape[0] # matriz com as variáveis do detector central
    n_linhas_m_external = m_external.shape[0] # matriz com as variáveis dos prótons
    index_m_external = [i for i in range(n_linhas_m_external)]
    mask = random.sample(index_m_external, k=n_linhas_m_base)
    m_sampled = np.concatenate((m_base, m_external[mask, :]), axis=1)
    return m_sampled

Isso vai me retornar um numpy array de dimensão (NxM)。 O que eu preciso é de uma função (ou apenas um código) que execute esse r_sample 10 ou 20 vezes, mas que não produza 10 ou 20 arrays separados, Eu preciso deles juntos, num array só。 Tipo assim, a saída da função r_sample é assim:

array( [[ 1,2,3],
        [4,5,6],
        [7,8,9]])

接下来,我想要类似的东西

array( [[ 1,2,3],
        [4,5,6],
        [7,8,9],
        [1,2,3],
        [4,5,6],
        [7,8,9],
        [1,2,3],
        [4,5,6],
        [7,8,9]])

在这个例子中,我运行了 r_sample 代码 3 次

【问题讨论】:

  • 调用N次是什么意思?在for循环里面还是递归函数里面?
  • 例如。我想执行函数 N = 5 次

标签: python arrays python-3.x numpy


【解决方案1】:

您可以创建一个名为all_arrays 的变量,它是一个空数组。在你调用函数的地方你可以放一个循环。然后您可以获取函数回调并添加current_array to all_arrays,如下所示:all_arrays += current_array。整个代码可能如下所示:

all_arrays = []
for _ in range(8):
    current_array = r_sample(m_base, m_external)
    all_arrays += current_array
   

这是你需要的吗?

【讨论】:

  • 这给出了以下错误:ValueError: 操作数不能与形状 (0,) (3,2) 一起广播
【解决方案2】:

你可以调用这个函数,它将你的数组和你想要连接它的次数作为输入:

def self_concatenate(array,nb_concat)
    result = array
    for i in range(nb_concat-1):
        result = np.concatenate((result, array), axis=0)
    return result

【讨论】:

  • 函数的执行是正确的,但我想要一个解决方案,其中我的 r_sample 函数将为每次执行生成不同的数组。它返回与 r_sample 相同的输出数组并连接。由于这个 r_sample 函数的结果是一个包含一些随机列的数组,我需要这个结果对于每次执行也是随机的
  • 您希望串联的数量是随机的吗?就这样?
  • 我设法通过做一个简单的循环然后开始解决它。感谢回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 2021-10-22
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多