我想把3D矩阵的所有元素(W*H)加起来,存储在一维矩阵中,长度=深度(输入矩阵的第三维)
我想说清楚: 输入尺寸=1D,形式为(W*H*D)。 所需输出=1D,长度=D
让我们考虑下面的3D矩阵:2 x 3 x 2。你知道吗
Layer 1 Layer 2
[1, 2, 3 [7, 8, 9
4, 5, 6] 10, 11, 12]
输出为1D:[21, 57]
我是python的新手,我这样写道:
def test(w, h, c, image_inp):
output = [image_inp[j * w + k] for i in enumerate(image_inp)
for j in range(0,h)
for k in range(0,w)
#image_inp[j * w + k] comment
]
printout(output)
我知道这将复制输入数组,因为它是输出数组。 另外,输出数组长度不等于深度。你知道吗
有人能帮我搞定吗
def test(w, h, c, image_inp):
output = [hwsum for i in enumerate(image_inp)
hwsum += wsum for j in range(0,h)
wsum += image_inp[j*w + k] for k in range(0,w)
#image_inp[j * w + k]
]
print "Calling outprint"
printout(output)
注意:我不想使用numpy(它正在工作)或任何数学库。 原因是我正在用python编写测试代码来评估一种正在工作的语言。你知道吗
编辑: 输入矩阵将以1D的形式输入测试函数,w,h,c作为参数, 所以它的形式是:
[1,2,3,4,5,6,7,8,9,10,12],
with w, h, c have to compute considering input1D as 3D matrix.
谢谢
如果你的矩阵是按照你的帖子所暗示的那样设置的,那么你的“3D”矩阵就是一个数组:
如果3D矩阵作为真实的三维对象设置为:
您可以通过执行以下操作创建一维和数组:
您的数据是如何格式化的还不太清楚,但希望您能从这两个示例中了解到这一点。你知道吗
编辑:
根据对输入的澄清,您可以很容易地做到这一点:
如果维度
w,h,c
被指定为数组[1,2,3,4,5,6,7,8,9,10,12]
的维度分支,那么您只需划分这些区域的边界,并在此基础上求和:作为一种简化方法:
Numpy非常适合对一维和多维数据进行切片和操作。它是快速,易于使用和非常“Python”。你知道吗
按照你的例子,你可以做:
您可以在这里看到img3d有2层、2行和3列。您可以使用如下索引进行切片:
要从3D转到1D,只需使用numpy.flatten():
相反,使用numpy.reshape():
现在加上jusingnumpy.sum数,给出要添加的维度(在本例中,维度1和2(维度为0索引):
仅用一句话概括一下,您可以这样做(问题中的变量名):
从numpy manual on numpy.sum:
相关问题 更多 >
编程相关推荐