【发布时间】:2020-12-07 16:55:28
【问题描述】:
假设我有两个数组 [1, 3, 5] 和 [2, 4, 6], 什么是合并它们以产生 [1, 2, 3, 4, 5, 6] 而不使用循环或递归而只是 numpy 的最佳方法?
【问题讨论】:
标签: python numpy concatenation numpy-ndarray
假设我有两个数组 [1, 3, 5] 和 [2, 4, 6], 什么是合并它们以产生 [1, 2, 3, 4, 5, 6] 而不使用循环或递归而只是 numpy 的最佳方法?
【问题讨论】:
标签: python numpy concatenation numpy-ndarray
不用numpy也可以:
只需添加它们,a = [1,3,5]+[2,4,6],然后对它们进行排序sorted(a)
【讨论】:
既然你标记了numpy:
np.array((a,b)).T.ravel()
或者当a,b 的大小可能不同时:
np.array(list(zip(a,b))).ravel()
输出:
array([1, 2, 3, 4, 5, 6])
【讨论】:
在纯python中你可以使用
import itertools
list(itertools.chain(*zip(array1, array2)))
【讨论】:
你也可以使用列表推导:
[x for t in zip(a,b) for x in t]
请注意,这等效于相同顺序的显式循环
out = []
for t in zip(a,b):
for x in t:
out.append(x)
【讨论】:
a = [1, 3, 5]
b = [2, 4, 6]
sorted([*a, *b])
输出:
[1, 2, 3, 4, 5, 6]
【讨论】: