我试图将2个numpy数组映射为[x,y],类似于zip对列表和元组所做的操作。
我有2个numpy数组,如下所示:
arr1 = [1, 2, 3, 4]
arr2 = [5, 6, 7, 8]
我正在寻找output as np.array([[[1, 5], [2, 6], [3, 7], [4, 8]]])
我尝试了这个,但是它映射了每个值,并且没有相同的索引。我可以在此处添加更多if条件,但是还有其他方法可以这样做,而无需添加if条件。
res = [arr1, arr2] for a1 in arr1 for a2 in arr2]
答案 0 :(得分:2)
IIUC,一种方法是使用numpy.vstack()
,然后使用transpose()
:
import numpy as np
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])
print(np.vstack([arr1, arr2]).transpose())
#array([[1, 5],
# [2, 6],
# [3, 7],
# [4, 8]])
或者您可以将zip
的输出传递给array
构造函数:
print(np.array(zip(arr1, arr2)))
#array([[1, 5],
# [2, 6],
# [3, 7],
# [4, 8]])
答案 1 :(得分:2)
答案 2 :(得分:0)
内置zip
命令是您的工作。它会完全按照您的要求进行。
arr1 = [1,2,3,4]
arr2 = [5,6,7,8]
list(zip(arr1, arr2))
[(1, 5), (2, 6), (3, 7), (4, 8)]