Python 2.7:将多个数组的所有元素添加到一起

时间:2014-03-03 12:04:13

标签: python arrays image for-loop

我正在从具有可变数量对象的列表中读取图像文件。

如何将每个文件中的数组相互添加?

以下是仅添加两个数组的示例:

imageArray= [sum(x,y) for x,y in zip(io.imread(list[1]),io.imread(list[2]))]    

我想扩展它以便能够添加可变数量的数组。

我尝试了以下内容,但无济于事:

for x in filelist:
    imageArray = [sum(y) for y in itertools.izip(io.imread(x))]

产生错误: TypeError: Invalid dimensions for image data

非常感谢任何帮助!

修改

我已经能够使用unutbu的答案部分将所有图像读入阵列:

im =  map(SNIO.imread,filelist)

从这里开始,我希望将所有结果数组加在一起(元素方面)。正确的解决方案将重现以下代码的结果:

imageArray = [x+y+z for x,y,z in zip(im[0],im[1],im[2])]

工作正常,但是,如原始问题中所述,我希望使用任意数量的数组执行此操作,而不是像前面的示例中那样指定它们。

1 个答案:

答案 0 :(得分:1)

io.imreadscipy.ndimage.io.imread相同吗? 如果是这样,那么要按元素添加数组,请使用np.add.reduce

import numpy as np
import scipy.ndimage.io as SNIO
files = ...
arrs = map(SNIO.imread, files)
result = np.add.reduce(arrs)

这比为数组中的每个位置调用Python的sum函数要快得多。