1

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

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

感谢您的帮助!

4

2 回答 2

3

如果您使用的是 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)
于 2020-05-05T09:01:17.683 回答
0

您可以numpy.swapaxes按照 Ehsan 的回答中所述使用,它交换两个轴。您还可以使用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)
于 2020-05-05T09:31:49.320 回答