我有一个3D numpy数组需要遍历。如果很重要的话,这是一种.nii文件类型(用于存储MRI脑数据的文件),我使用nipy模块加载这些图像,然后可以将其处理为numpy数组来进行图像处理。我想取出并遍历体素,并仅包括值小于2的体素。以下是我的尝试:
import nipy
import numpy
img = nipy.load_image('image.nii.gz')
img_manip = img.get_data()
result = numpy.zeros(shape = img_manip.shape, dtype = img_manip.dtype)
for matrix in img_manip:
for row in matrix:
for item in row:
if item < 2:
result += img_manip
这似乎可以工作,但速度极慢,现在仍在运行。我想知道这种方法是否正确?我应该使用np.empty吗?我不确定,因为我对python还很陌生。
编辑:顺便提一下,img_manip的形状大约是(368, 170, 32),数据类型为float64。
(抱歉我不知道如何使代码看起来"pythonic"!)
result = (img_manip < 2).sum() * img_manip
иҝҷж ·зҡ„ж“ҚдҪңпјҢдёҺimg_manip[img_manip > 2] = 0
дёҚеҗҢгҖӮ - jfs