假设我有一个数组,如下所示:
[
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
]
我尝试将每2个数组堆叠在一起,所以我最终得到了以下结果:
[
[[1, 2, 3], [1, 2, 3]],
[[1, 2, 3], [1, 2, 3]],
]
尤其重要的是要尽可能高效,因为它将在不太强大的硬件上运行,所以我更喜欢在不循环数组的情况下这样做。有没有一种不用循环就能在numpy中实现的方法呢?提前谢谢你。
发布于 2019-02-16 02:14:31
假设您的第一维是偶数(2的倍数),您可以使用reshape
将2维数组转换为3维数组,如下所示。这里唯一的事情是使用第一维作为int(x/2)
,其中x
是二维数组的第一维,第二维是2。转换为int
非常重要,因为形状参数必须是整数类型。
arr_old = np.array([
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
])
x, y = arr_old.shape # The shape of this input array is (4, 3)
arr_new = arr_old.reshape(int(x/2), 2, y) # Reshape the old array
print (arr_new.shape)
# (2, 2, 3)
print (arr_new)
# [[[1 2 3]
# [1 2 3]]
# [[1 2 3]
# [1 2 3]]]
正如@orli在评论中指出的那样,您还可以这样做
arr_old.shape = (x//2, 2, y)
https://stackoverflow.com/questions/54719216
复制相似问题