将一维阵列合并为二维阵列

2024-05-19 00:00:32 发布

您现在位置:Python中文网/ 问答频道 /正文

是否有一个内置函数将两个1D数组合并为2D数组? 举个例子:

X=np.array([1,2])
y=np.array([3,4])
result=np.array([[1,3],[2,4]])

我可以想出两个简单的解决方案。 第一个很简单。在

^{pr2}$

另一个使用lambda函数。在

np.array(list(map(lambda i: [a[i],b[i]], range(len(X)))))

虽然第二个看起来更复杂,但它的速度似乎是第一个的两倍。在

编辑 第三个解决方案涉及到zip()函数。在

np.array(list(zip(X, y)))

它比lambda函数快,但比@Divakar建议的column_stack解决方案慢。在

np.column_stack((X,y))

Tags: lambda函数mapstacknpcolumn数组result
2条回答

这是一种方法:

import numpy as np
X = np.array([1,2])
y = np.array([3,4])
result = np.vstack((X, y)).T
print(result)

# [[1 3]
#  [2 4]]     

考虑可伸缩性。如果我们增加阵列的大小,完全numpy命令解决方案会更快:

np.random.seed(1234)
X = np.random.rand(10000)
y = np.random.rand(10000)

%timeit np.array(list(map(lambda i: [X[i],y[i]], range(len(X)))))
6.64 ms ± 32.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit np.array(list(zip(X, y)))
4.53 ms ± 33.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit np.column_stack((X,y))
19.2 µs ± 30.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit np.transpose([X,y])
16.2 µs ± 247 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit np.vstack((X, y)).T
14.2 µs ± 94.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

考虑到所有提出的解决方案,np.vstack(X,y).T在增加arrayasX和{}时最快。在

相关问题 更多 >

    热门问题