我需要操作一个大的numpy数组,以便在满足条件时将每个元素更改为1或0(稍后将用作像素掩码).数组中有大约800万个元素,我的当前方法对于缩减管道来说需要太长时间:
for (y,x), value in numpy.ndenumerate(mask_data):
if mask_data[y,x]<3: #Good Pixel
mask_data[y,x]=1
elif mask_data[y,x]>3: #Bad Pixel
mask_data[y,x]=0
Run Code Online (Sandbox Code Playgroud)
是否有一个numpy函数可以加快这个速度?
我有一个数组(称为data_inputs
)包含数百个天文图像文件的名称.然后操纵这些图像.我的代码工作,需要几秒钟来处理每个图像.但是,它一次只能执行一个图像,因为我通过for
循环运行数组:
for name in data_inputs:
sci=fits.open(name+'.fits')
#image is manipulated
Run Code Online (Sandbox Code Playgroud)
我没有理由在任何其他图像之前修改图像,因此可以在我的机器上使用所有4个核心,每个核心在不同的图像上运行for循环吗?
我已经阅读了关于multiprocessing
模块的内容,但我不确定如何在我的情况下实现它.我渴望开始multiprocessing
工作,因为最终我必须在10,000多张图片上运行它.