相关疑难解决方法(0)

如何在3D Numpy数组中生成球体

给定一个3D numpy形状的阵列(256,256,256),我如何在内部形成实心球形?下面的代码生成一系列增加和减少的圆,但在另外两个维度中查看时呈菱形.

def make_sphere(arr, x_pos, y_pos, z_pos, radius=10, size=256, plot=False):

    val = 255            
    for r in range(radius):
        y, x = np.ogrid[-x_pos:n-x_pos, -y_pos:size-y_pos]
        mask = x*x + y*y <= r*r 
        top_half = arr[z_pos+r]
        top_half[mask] = val #+ np.random.randint(val)
        arr[z_pos+r] = top_half

    for r in range(radius, 0, -1):
        y, x = np.ogrid[-x_pos:size-x_pos, -y_pos:size-y_pos]
        mask = x*x + y*y <= r*r 
        bottom_half = arr[z_pos+r]
        bottom_half[mask] = val#+ np.random.randint(val)
        arr[z_pos+2*radius-r] = bottom_half

    if plot:
        for i in range(2*radius):
            if arr[z_pos+i].max() != 0:
                print(z_pos+i)
                plt.imshow(arr[z_pos+i]) …
Run Code Online (Sandbox Code Playgroud)

python numpy

6
推荐指数
1
解决办法
3533
查看次数

标签 统计

numpy ×1

python ×1