【发布时间】:2016-05-02 07:26:59
【问题描述】:
我有一个大型 numpy 3D 数组 (45900, 3, 3)。在该数组的每个 3x3 子集中,我都有一个具有唯一 ID 的集群(集群的值大于 0)。我的挑战是在每个子集中找到每个集群的“极值点”。 “极端点”是指集群中距离最远的两个点。 因此,它与这些点的值无关,仅与位置有关。
一个示例子集是:
numpy3D= array([[[1, 1, 1],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 2],
[0, 0, 2],
[0, 0, 2]],
[[3, 3, 3],
[3, 0, 0],
[0, 0, 0]],
[[4, 0, 0],
[0, 4, 0],
[0, 0, 4]]])
作为输出,我想要一个表示“极值点”的 x、y 和 z 坐标的数组。
例如:
#output
array([[ 0., 0., 0.],
[ 0., 0., 2.],
[ 1., 0., 2.],
[ 1., 2., 2.],
[ 2., 1., 0.],
[ 2., 0., 2.],
[ 3., 0., 0.],
[ 3., 0., 2.],
[ 4., 0., 0.],
[ 4., 2., 2.]])
其中第一列表示子集位置,第二列和第三列表示每个极值点的 x 和 y 坐标。所以在这种情况下,numpy3D[0,0,0] 是第一个 3x3 子集中第一个极值点的坐标,而 numpy3D[0,0,2] 是该子集中第二个极值点的坐标。
对这个问题有什么想法吗?
【问题讨论】:
-
“这个数组的每个二维子集”是什么意思?
-
例如,您将获得的 3 x 3 2d 数组:numpy3D[0]
-
但是 3 x 3 将是 x,y,z 坐标,而不是 x,y。
-
你是对的!所以我需要的是子集位置的 x 坐标和极值点的 y,z 坐标。我将编辑我的问题。
-
这些 3x3 2D 矩阵代表什么?