如何在数组中查找组



我有一个二进制三维数组,它有小组1和大组1。我想搜索阵列,当找到1时,我想搜索x,y,z方向上的周围值,并计算连接了多少1。如果1的数量少于x,我想将该组设置为0。整个三维阵列由10组成。

阵列示例:

img  = np.array([[[0,0,0,1,0],
[0,0,0,1,1]],
[[0,0,0,1,0],
[0,0,0,0,0]]])

在x、y、z方向上有一组直接相邻的1。在我针对这个场景的代码中,组是num_group = 4。由于该组小于10,我想将该组设为0

img  = np.array([[[0,0,0,0,0],
[0,0,0,0,0]],
[[0,0,0,0,0],
[0,0,0,0,0]]])

在我的数组中有1-2个非常大且不同的组。我只想在我的最后一个数组中有那些大的组。

import nibabel as nib
import numpy as np
import os, sys
x = 10
img = nib.load(\test.nii).get_fdata()
print(img.shape)
>>>(512,512,30)
size_x, size_y, size_z = vol.shape
for z_slices in range(size_z):
for y_slices in range(size_y):
for x_slices in range(size_x):
num_group = (Find a 1 and count how many 1s are connected)
if num_group < x:
num_group = 0

您可以使用撇渣:

from skimage.measure import regionprops,label
sz = 10  #this is your set threshold
xyz = np.vstack([i.coords for i in regionprops(label(img)) if i.area<sz]) #finding regions and coordinates of regions smaller than threshold
img[tuple(xyz.T)]=0 #setting small regions to 0

输出:

[[[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]]]

相关内容

  • 没有找到相关文章

最新更新