虽然我不是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
答案 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]