gpt4 book ai didi

numpy - 在 3D numpy 网格中绘制/采样球体

转载 作者:行者123 更新时间:2023-12-05 00:30:21 36 4
gpt4 key购买 nike

我想对以 numpy 数组表示的球形物体进行基于体素的测量。由于采样,这些球体被表示为一组立方体(因为它们是在数组中采样的)。我想对这个网格限制引入的错误进行模拟。有没有办法在 numpy 网格中绘制 3D 球体来运行我的模拟? (所以基本上,单位长度为 1 的球体将是数组中的一个点)

还是有另一种计算采样引入的误差的方法?

在 2-D 中似乎很容易... Sampling in 2D

最佳答案

最直接的方法是创建一个边界框数组,在每个点保存到球心的距离:

>>> radius = 3
>>> r2 = np.arange(-radius, radius+1)**2
>>> dist2 = r2[:, None, None] + r2[:, None] + r2
>>> volume = np.sum(dist2 <= radius**2)
>>> volume
123

二维案例更容易形象化:
>>> dist2 = r2[:, None] + r2
>>> (dist2 <= radius**2).astype(np.int)
array([[0, 0, 0, 1, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[1, 1, 1, 1, 1, 1, 1],
[0, 1, 1, 1, 1, 1, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0]])
>>> np.sum(dist2 <= radius**2)
29

关于numpy - 在 3D numpy 网格中绘制/采样球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16170705/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com