【发布时间】:2018-04-04 19:18:58
【问题描述】:
我有一个 100x100x100 的 numpy 数组,它表示由 2D 切片组成的 3D 体积。
我想使用从具有最佳信噪比的体积创建的模板,在一堆体积上执行此体积中的对象的互相关。
为了让事情变得更容易,我尝试进行 2D 互相关,然后通过对每个切片执行 scipy correlate2d 然后将该切片放入 3D numpy 数组中来构建 3D 体积。
我已经测试了 correlate2d 函数,一切似乎都可以正常工作,但是我希望能够拉出这些切片中任何一个切片的任何部分,并根据测量的坐标制作我的模板。
#inputdata, a 3D numpy array with x , y and z image data.
mrc = np.array((mrcfileinput.data))
#The measured coords for the template I want to box out
xtake = np.array(range(64,77))
ytake = np.array([50])
ztake = np.array(range(9,32))
#checking the range is correct
print (xtake, ytake, ztake)
#turning them into lists although not sure this is needed
xlist = list(xtake)
ylist = list(ytake)
zlist = list(ztake)
#attempting to implement numpy.take with very little luck
template = np.take(mrc, ([xlist],[ylist],[zlist]))
print (template)
所以我最初的想法是测量我要装箱的盒子的两个角。这本质上是一个 2D 框(y 轴保持在 50)。这似乎与 numpy take 命令不兼容。在我离开并考虑如何用我认为是 take 命令想要的每个精确坐标填充整个阵列之前,我想知道是否有人知道更简单的方法?
(将所有内容变成列表是为了使其以逗号分隔。我不确定这是否真的需要)
【问题讨论】: