问题描述
我想附加两个 NumPy 数组。这两个数组具有相同的形状,我想附加两个数组的每个元素并将其存储在另一个计算成本较低的 NumPy 数组中。 例如:
a = np.arange (12).reshape(4,3)
b = np.arange (2,14).reshape(4,3)
我想创建以下 np.array:
c = [[ (0,2) (1,3) (2,4)]
[ (3,5) (4,6) (5,7)]
[ (6,8) (7,9) (8,10)]
[(9,11) (10,12) (11,13)]]
需要注意的是,使用for循环可以创建,但是高维的计算成本是巨大的。最好使用矢量化方式。 你能告诉我如何创建这个 np.array 吗?
解决方法
目前尚不清楚您期望的形状,但我相信您正在寻找numpy.dstack
:
>>> a
array([[ 0,1,2],[ 3,4,5],[ 6,7,8],[ 9,10,11]])
>>> b
array([[ 2,3,4],[ 5,6,7],[ 8,9,10],[11,12,13]])
>>> np.dstack([a,b])
array([[[ 0,[ 1,3],[ 2,4]],[[ 3,[ 4,6],7]],[[ 6,[ 7,9],10]],[[ 9,11],[10,12],13]]])
,
使用 dstack 和 reshape,您可以压缩和改造它们。
np.dstack((a,b)).reshape(4,2)
这就给你了
[[[ 0 2]
[ 1 3]
[ 2 4]]
[[ 3 5]
[ 4 6]
[ 5 7]]
[[ 6 8]
[ 7 9]
[ 8 10]]
[[ 9 11]
[10 12]
[11 13]]]
应该提供与元组相同的功能。我尝试了多种方法,但没有设法在 numpy 数组中保留实际的元组