Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7:将多个数组的所有元素添加到一起_Python_Arrays_Image_For Loop - Fatal编程技术网

Python2.7:将多个数组的所有元素添加到一起

Python2.7:将多个数组的所有元素添加到一起,python,arrays,image,for-loop,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(

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

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

以下是仅添加两个阵列的示例:

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:图像数据的维度无效

任何帮助都将不胜感激

编辑

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

im =  map(SNIO.imread,filelist)
从这里开始,我希望将所有结果数组添加到一起(按元素)。正确的解决方案将再现以下代码的结果:

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

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

io.imread是否与scipy.ndimage.io.imread相同? 如果是,则要按元素添加数组,请使用:


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

io.imread
skimage.io.imread
,我相信这与
scipy.ndimage.io.imread
是一样的。然而,解决方案并没有按预期工作
map.SNIO.imread,files
是一个好的开始,但是
np.add-reduce(arrs)
不会产生我想要的结果。我将对问题进行编辑以澄清。我相信
np.add.reduce(arrs)
应该会产生您想要的结果——前提是
arrs
中的值不会导致算术溢出。还请注意,如果RGB图像每个通道具有8位,则每个通道中的值的范围为0-255。求和后,结果可能很容易超过255。因此,在将结果视为图像之前,必须对其进行重新缩放——如果这就是您正在做的。。。你能发布一些示例图片并解释你期望的结果吗?这就解决了问题!我认为问题在于,正如您所说,结果值超过了255。谢谢
import numpy as np
import scipy.ndimage.io as SNIO
files = ...
arrs = map(SNIO.imread, files)
result = np.add.reduce(arrs)