您能否在不使用 Python 中的时间变量的情况下连接函数输出的多个数组?

Can you concatenate multiple arrays from the output of a function without using temporal variables in Python?

问题:

问题:有没有不用时态变量的方法? 使用时间变量:

def f(i):
   ...
   return np_array_1, np_array_2

np_array_1, np_array_2 = f(0)
for i in range(1, 5):
   np_array_1_t, np_array_2_t = f(i)
   np_array_1 = np.concatenate(np_array_1, np_array_1_t)
   np_array_2 = np.concatenate(np_array_2, np_array_2_t)
del np_array_1_t, np_array_2_t

如果我正确理解您的问题,则以下内容有效:

a1s, a2s = zip(*(f(i) for i in range(5)))
a1 = np.concatenate(a1s)
a2 = np.concatenate(a2s)

如果所有数组的大小都相同,则更简单:

a1, a2 = np.array([f(i) for i in range(5)]).squeeze().T

这可能会使其他答案的列表操作更容易理解

alist1 = []; alist2 = []
np_array_1, np_array_2 = f(0)
for i in range(0, 5):
   a1, a2 = f(i)
   alist1.append(a1); alist2.append(a2)
np_array_1 = np.concatenate(alist1)
np_array_2 = np.concatenate(alist2)

concatenatearray(和变体)都将数组列表作为输入。最好将数组收集在一个列表中,并且只在 concatenate 上执行。 List append更高效,适合迭代应用