gpt4 book ai didi

python - 创建 3D 二值图像

转载 作者:太空狗 更新时间:2023-10-30 02:09:04 25 4
gpt4 key购买 nike

我有一个二维数组,a,包含一组 100 个 x、y、z 坐标:

[[ 0.81  0.23  0.52]
[ 0.63 0.45 0.13]
...
[ 0.51 0.41 0.65]]

我想创建一个 3D 二值图像 b,在 x、y、z 维度中每个维度有 101 个像素,坐标范围在 0.00 和 1.00 之间。a 定义的位置处的像素值应为 1,所有其他像素值应为 0。

我可以使用 b = np.zeros((101,101,101)) 创建一个正确形状的零数组,但是我如何分配坐标并切入其中以创建使用 >一个?

最佳答案

首先,首先将 float 安全地舍入为整数。在上下文中,请参阅 this 问题。

a_indices = np.rint(a * 100).astype(int)

接下来,将b中的索引赋值为1。但要注意使用普通的list而不是数组,否则会触发index arrays的使用.似乎这种方法的性能与替代方法相当(感谢@Divakar!:-)

b[list(a_indices.T)] = 1

我创建了一个小示例,大小为 10 而不是 100,维度是 2 而不是 3,以说明:

>>> a = np.array([[0.8, 0.2], [0.6, 0.4], [0.5, 0.6]])
>>> a_indices = np.rint(a * 10).astype(int)
>>> b = np.zeros((10, 10))
>>> b[list(a_indices.T)] = 1
>>> print(b)
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]
[ 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]

关于python - 创建 3D 二值图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218556/

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