【问题标题】:Swap axes of a 3D image in nilearn/numpy在 nilearn/numpy 中交换 3D 图像的轴
【发布时间】:2020-05-05 08:53:34
【问题描述】:

我正在处理一些神经影像数据,我的扫描尺寸是 (100, 150, 100)。我目前正在使用 nibabel 格式的文件。

有什么好方法可以交换轴吗?例如,我希望我的图像为 (100, 100, 150)。我希望它采用 nibabel 格式,但如果需要,我可以将图像保存到 numpy ndarray,然后也可以在那里进行工作。在这种情况下,在 numpy 中有没有很好的方法来做到这一点?

感谢您的帮助!

【问题讨论】:

  • 为什么要这样做?现在是 (X,Y,Z) 吗?

标签: numpy nibabel nilearn


【解决方案1】:

如果您使用的是 numpy,请使用:

import numpy as np

arr = np.swapaxes(arr, 1, 2)

这将交换轴 1 和 2(它们分别是 150 和 100 尺寸的第 2 和第 3 维)。

示例代码:

arr = np.zeros((100,150,100))
arr = np.swapaxes(arr, 1, 2)
print(arr.shape)

输出:

(100, 100, 150)

【讨论】:

    【解决方案2】:

    您可以使用 Ehsan 的回答中提到的 numpy.swapaxes,它交换两个轴。您还可以使用numpy.transpose,它允许您以任何所需的顺序更改两个或多个轴。例如:

    >>> import numpy as np
    >>> data = np.empty((4, 5, 6))
    >>> data.shape
    (4, 5, 6)
    >>> np.transpose(data, axes=(1, 2, 0)).shape
    (5, 6, 4)
    

    【讨论】:

      猜你喜欢
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-21
      • 2018-10-26
      相关资源
      最近更新 更多