我想做的是获取一个表示3D图像数据的numpy数组,并为每个体素计算hessian矩阵。我的输入是一个形状为(Z,X,Y)的矩阵,我可以轻松地沿z切片并检索单个原始图像。
gx, gy, gz = np.gradient(imgs)
gxx, gxy, gxz = np.gradient(gx)
gyx, gyy, gyz = np.gradient(gy)
gzx, gzy, gzz = np.gradient(gz)
我可以按如下方式访问单个体素的粗麻布:
x = 100
y = 100
z = 63
H = [[gxx[z][x][y], gxy[z][x][y], gxz[z][x][y]],
[gyx[z][x][y], gyy[z][x][y], gyz[z][x][y]],
[gzx[z][x][y], gzy[z][x][y], gzz[z][x][y]]]
但这很麻烦,我无法轻松地对数据进行切片。
我已经尝试过按照以下方式使用重塑
H = H.reshape(Z, X, Y, 3, 3)
但是,当我通过检索特定体素的hessian进行测试时,从重整形数组返回的值与原始数组完全不同。
我认为我可以以某种方式使用zip,但是我只能找到它来制作元组列表。
答案 0 :(得分:2)
我们可以使用列表理解来获得粗麻布-
[np.gradient(i) for i in np.gradient(imgs)]
仅需说明一下:np.gradient
循环遍历(3 x 3)
调用的两个输出级别,从而在外两个轴上产生H_all
形的张量。我们需要将这两个作为最终输出中的最后两个轴。因此,我们将它们移到最后。
因此,x,y,z
拥有所有的粗麻布,因此我们可以提取给定x = 100
y = 100
z = 63
H = H_all[z,y,x]
的特定粗麻布,就像这样-
<?php echo "<li><a href='edit.php?userId=${row['id']}'>Edit</a></li>"?>