如何在Python中融合ndial数组的两个轴

2024-09-27 02:23:21 发布

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

代替n维数组,让我们用一个3D数组来说明我的问题:

>>> import numpy as np
>>> arr = np.ones(24).reshape(2, 3, 4)

所以我有一个形状数组(2,3,4)。我想连接/融合第二和第三轴一起得到一个数组的形状(2,12)。你知道吗

我错了,以为我可以用np.concatenate轻松地做到:

>>> np.concatenate(arr, axis=1).shape
(3, 8)

我找到了一种方法np.滚动轴以及np.连接但随着阵列尺寸的增大,它变得越来越难看:

>>> np.rollaxis(np.concatenate(np.rollaxis(arr, 0, 3), axis=0), 0, 2).shape
(2, 12)

有什么简单的方法可以做到这一点吗?它看起来很琐碎,所以一定存在一些功能,但我似乎找不到它。你知道吗

编辑:实际上我可以使用np.reshape,这意味着首先计算轴的尺寸。是否可以不事先访问/计算形状?你知道吗


Tags: 方法importnumpy尺寸asnpones数组
2条回答

在最新的python版本中,您可以执行以下操作:

anew = a.reshape(*a.shape[:k], -1, *a.shape[k+2:])

我建议不要直接分配给.shape,因为它不能在足够不连续的数组上工作。你知道吗

假设数组中有n维,并且希望融合相邻轴ii+1

shape = a.shape
new_shape = list(shape[:i]) + [-1] + list(shape[i+2:])
a.shape = new_shape

相关问题 更多 >

    热门问题