python - 将第 N 维中的项目拆分并交换到第 N+1 维

标签 python numpy numpy-ndarray

假设我有一个像这样的 numpy 数组:

[[[ 1,  2,  3,  4],
  [ 5,  6,  7,  8],
  [ 9, 10, 11, 12],
  [13, 14, 15, 16]]]

维度为 (1, 4, 4)

我想将其转换为:

[[[[ 1,  3], [ 2,  4]],
  [[ 5,  7], [ 6,  8]],
  [[ 9, 11], [10, 12]],
  [[13, 15], [14, 16]]]]

其维度为 (1, 4, 2, 2)。

numpy 中是否有任何函数可以用来修改数组?

  • array.reshape() 很接近,但不完全是因为它不能交换项目。

我想避免直接使用 python,因为此代码用于为神经网络输入格式化一些数据,而 python 的速度(考虑到实际数组的大小)可能是一个瓶颈。

最佳答案

你很接近。您唯一需要做的就是交换第三轴和第四轴:

>>> np.swapaxes(a.reshape(1,4,2,2), 2,3)
array([[[[ 1,  3],
         [ 2,  4]],

        [[ 5,  7],
         [ 6,  8]],

        [[ 9, 11],
         [10, 12]],

        [[13, 15],
         [14, 16]]]])

关于python - 将第 N 维中的项目拆分并交换到第 N+1 维,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58252083/

相关文章:

python - 日期时间值数组

python - 谁能告诉我django的延迟加载和事务吗?

python - DRF - 方法 'GET' 不允许

python-3.x - 为 AIX 的 python3 编译 numpy 工作但导入失败

python - numpy 无法识别转换中的数据类型

python - 从两个多维 numpy 数组复制到另一个不同形状的数组

python - 受其他数组限制的 Numpy 随机数组

numpy - torch.where() 可以以等效的广播形式使用吗?

python - 分割所有空白后重写回文件?

python - 匹配两个数据框之间的字符串并创建列