将(M,N,O)numpy数组整形为点云

guz6ccqo  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(87)

我有一个3D numpy数组(2000 x 2000 x 300),由300个二进制图像组成(像素值为0或1)。我想得到一个维度为P x 3的numpy数组,其中P是值为1的像素数。
我想这样做是为了能够处理长度为P的3个向量中的每一个,这些向量包含像素的坐标(x,y,z),并且能够绘制点云。
显然,我最初考虑使用3 for循环并追加到列表,但这将花费非常长的时间。

svujldwt

svujldwt1#

这就是np.argwhere的目的:

import numpy as np

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

args  = np.argwhere(array)
print(args)

字符串
输出量:

[[0 0 0]
 [0 0 2]
 [0 1 2]
 [0 2 0]
 [0 2 1]
 [1 0 2]
 [1 2 0]
 [1 2 1]
 [2 0 1]
 [2 2 1]
 [2 2 2]]

相关问题