是否有python函数用于将存储在列表中的两个3D图像的体素值相加,并将输出存储在另一个列表中

是否有python函数用于将存储在列表中的两个3D图像的体素值相加,并将输出存储在另一个列表中,python,Python,我有大小为(197233189)的3D图像,其中该卷中的每个点都包含灰度值。我有两种不同的图像,左海马和右海马。为了将它们结合起来,我只需要将这些图像元素相加。我总共有44张海马体的图像。因此,右侧海马体图像存储在包含44个元素的“向量”中,每个元素都是(197233189)图像。左海马图像也是如此。我总是得到一个错误,列表分配索引超出范围 我已经尝试了以下代码 def make_gt(向量L_hc,向量R_hc): GT_hc_分段=[] 对于范围内的n(len(vector_L_hc)):

我有大小为(197233189)的3D图像,其中该卷中的每个点都包含灰度值。我有两种不同的图像,左海马和右海马。为了将它们结合起来,我只需要将这些图像元素相加。我总共有44张海马体的图像。因此,右侧海马体图像存储在包含44个元素的“向量”中,每个元素都是(197233189)图像。左海马图像也是如此。我总是得到一个错误,列表分配索引超出范围

我已经尝试了以下代码

def make_gt(向量L_hc,向量R_hc):
GT_hc_分段=[]
对于范围内的n(len(vector_L_hc)):
对于范围内的x(向量[n]。形状[0]):
对于范围内的y(向量[n]。形状[1]):
对于范围内的z(向量[n]。形状[2]):
GT_hc_分割[n][x][y][z]=向量_L_hc[n][x][y][z]+向量_R_hc[n][x][y][z]
返回GT\U hc\U分段
索引器:列表分配索引超出范围

我还尝试了以下方法:

def make_gt(向量L_hc,向量R_hc):
GT_hc_分段=[]
对于范围内的i(len(vector_L_hc)):
GT_hc_segmentation[i]=np.add(vector_L_hc[i],vector_R_hc[i])
返回GT\U hc\U分段
这也会产生以下错误: 索引器:列表分配索引超出范围

向量_L_hc和向量_R_hc的索引0是某个图像,索引1是x坐标,索引2是y坐标,索引3是z坐标

我想要一个新的向量,GT_hc_分割,其中一个图像是两个图像的总和,一个来自vector_L_hc,另一个来自vector_R_hc。
结果是列表还是数组?与vector_L_hc和vector_R_hc的大小相同。

对于第一种方法,您可能试图对多维numpy数组使用列表索引。很难说,因为您没有显示声明对象的代码。对于numpy数组,您可以像
[i,j,k]
那样索引,而不是
[i][j][k]

对于第二种方法:

def make_gt(vector_L_hc, vector_R_hc):

    GT_hc_segmentation = []
    for i in range(len(vector_L_hc)):
        GT_hc_segmentation[i] = np.add(vector_L_hc[i], vector_R_hc[i])

    return GT_hc_segmentation
您没有初始化GT\U hc\U分段。它是空的,所以你不能像这里那样索引到它。您需要使用长度对其进行初始化,或者可以像下面这样动态地向其添加元素:

def make_gt(vector_L_hc, vector_R_hc):

    GT_hc_segmentation = []
    for i in range(len(vector_L_hc)):
        GT_hc_segmentation.append(np.add(vector_L_hc[i], vector_R_hc[i]))

    return GT_hc_segmentation