假设 box
是您的一个盒子(形状为 (8, 4)
的 NumPy 数组),label
是与该盒子关联的标签,且假设 step_size
是一个浮点数。以下是如何找到盒子里所有点及其对应标签的方法:
points = np.mgrid[
np.min(box[:, 0]):np.max(box[:, 0]):step_size,
np.min(box[:, 1]):np.max(box[:, 1]):step_size,
np.min(box[:, 2]):np.max(box[:, 2]):step_size,
label:label + 1
].reshape(4, -1).T
示例:
>>> from itertools import product, repeat
>>> import numpy as np
>>> step_size = 0.6
>>> label = 7
>>> box = np.hstack([np.array(list(product(*repeat(range(2), 3)))), np.ones((8,1)) * label])
>>> box
array([[0., 0., 0., 7.],
[0., 0., 1., 7.],
[0., 1., 0., 7.],
[0., 1., 1., 7.],
[1., 0., 0., 7.],
[1., 0., 1., 7.],
[1., 1., 0., 7.],
[1., 1., 1., 7.]])
>>> points = np.mgrid[
... np.min(box[:, 0]):np.max(box[:, 0]):step_size,
... np.min(box[:, 1]):np.max(box[:, 1]):step_size,
... np.min(box[:, 2]):np.max(box[:, 2]):step_size,
... label:label + 1
... ].reshape(4, -1).T
>>> points
array([[0. , 0. , 0. , 7. ],
[0. , 0. , 0.6, 7. ],
[0. , 0.6, 0. , 7. ],
[0. , 0.6, 0.6, 7. ],
[0.6, 0. , 0. , 7. ],
[0.6, 0. , 0.6, 7. ],
[0.6, 0.6, 0. , 7. ],
[0.6, 0.6, 0.6, 7. ]])