在numpy中堆叠数组

3

我有两个数组:

A = np.array([1, 2, 3])
B = np.array([2, 3, 4])
C = np.stack((A, B), axis=0)

print C.shape
(2, 3)

形状不应该是(6,)吗?

3
不,你没有沿 axis=0 进行堆叠,因此你创建了一个二维数组,其中 C[0] == A,且 C[1] == B。你可能正在寻找的是 np.hstack((A,B)) - Willem Van Onsem
1
你的意思是,因为我在 axis=0 上堆叠,所以会为 C 创建一个新轴,从而得到形状为 (2, 3) 的数组吗? - harman
是的,它会创建一个新的轴。根据文档[1],“沿着新轴连接一系列数组。” [1] https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.stack.html - Umang Gupta
stack 添加了一个新的维度。np.concatenate 操作已存在的维度。 - hpaulj
np.hstacknp.vstack怎么样?它们也可以在现有的数组上操作。 - harman
显示剩余2条评论
2个回答

2
使用np.stack()函数,您可以指定要考虑的索引轴。因此,您永远不会得到形状为6的结果,对于此示例,只会得到(2,3)(3,2),具体取决于您选择了哪个轴。
请参见下面:
A = np.array([1, 2, 3])
B = np.array([2, 3, 4])
arrays = [A, B]

使用以下代码:
print(np.stack(arrays, axis=0))

您会得到以下输出:
[[1 2 3]
 [2 3 4]]

使用以下代码:
print(np.stack(arrays, axis=1))

您会获得以下输出:
[[1 2]
 [2 3]
 [3 4]]

1

因为你正在沿着轴0堆叠。 它会执行类似于以下操作:

[[1,2,3],
 [4,5,6]]

如果您想要(6,)形状,您应该使用np.concatenate

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接