在python循环

时间:2018-06-07 22:30:05

标签: python arrays loops numpy

虽然我不是python的新手,但我是一个非常罕见的用户并且很快就脱离了我的深度。我猜这有一个简单的解决方案,我完全不知道。

我有一个存储为2D numpy数组的图像。每个像素包含6个数字,而不是像RGB图像那样的3个值。像素的XY坐标全部存储为阵列的行值,而有6列对应于不同的波长值。目前,我可以调出任何单个像素并查看波长值是什么,但我想在一系列像素上加上这些值。

我知道求和数组是直截了当的,这基本上是我想要在图像中的任意指定像素范围内实现的。

a=np.array([1,2,3,4,5,6])
b=np.array ([1,2,3,4,5,6])
sum=a+b
sum=[2,4,6,8,10,12]

我猜我需要一个循环来指定我想要求和的输入像素范围。请注意,与上面的示例一样,我不是要对一个数组的6个值求和,而是将所有第一个元素,所有第二个元素等等相加。但是,我认为发生的事情是循环运行超过指定的像素范围,但不存储要添加到下一个像素的值。我不知道如何克服这一点。

到目前为止我所拥有的是:

fileinput=np.load (‘C:\\Users\\image_data.npy’) #this is the image, each pixel is 6 values
exampledata=np.arange(42).reshape((7,6))
for x in range(1,4)
    signal=exampledata[x]
    print(exampledata[x]) #this prints all the arrays I would like to sum, ie it shows list of 6 values for each of the pixels specified within the range. 
    sum.exampledata[x] # sums up the values within each list, rather than all the first elements, all the second elements etc. 
    exampledata.sum(axis=1) # produces the error: AxisError: axis 1 is out of bounds for array of dimension 1

我想我可以手动总结一小部分像素,但这仅适用于小范围的像素。

first=fileinput[1]
second=fileinput[2]
third=fileinput[3]
sum=first+second+third

1 个答案:

答案 0 :(得分:0)

这应该有效

exampledata = np.arange(42).reshape((7,6))
# Sum data along axis 0:
sum = exampledata[0:len(exampledata)].sum(0)
print(sum)

初始2D数组:

[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]
 [24 25 26 27 28 29]
 [30 31 32 33 34 35]
 [36 37 38 39 40 41]]

输出:

[126 133 140 147 154 161]