繰り返し処理したい 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」に見せる方法がわかりません!)