您能否在不使用 Python 中的时间变量的情况下连接函数输出的多个数组?
Can you concatenate multiple arrays from the output of a function without using temporal variables in Python?
问题:
- 函数
f
returns numpy ndarrays np_array_1, np_array_2
。两个数组的长度相同,但每次调用的长度可能不同。
- 我想多次调用
f
并仅保留来自不同调用的两个数组。
问题:有没有不用时态变量的方法?
使用时间变量:
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)
concatenate
和 array
(和变体)都将数组列表作为输入。最好将数组收集在一个列表中,并且只在 concatenate
上执行。 List append更高效,适合迭代应用
问题:
- 函数
f
returns numpy ndarraysnp_array_1, np_array_2
。两个数组的长度相同,但每次调用的长度可能不同。 - 我想多次调用
f
并仅保留来自不同调用的两个数组。
问题:有没有不用时态变量的方法? 使用时间变量:
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)
concatenate
和 array
(和变体)都将数组列表作为输入。最好将数组收集在一个列表中,并且只在 concatenate
上执行。 List append更高效,适合迭代应用