【发布时间】:2016-08-25 14:37:31
【问题描述】:
我有一个大型 numpy 3d 数组 (10000, 3, 3)。我想在其中找到每个区域的中心坐标(具有相同编号的集群)。每个子阵列可以有 1、2、3 或 4 个区域。
我的数组的一个子集是:
largearray= array([[[1, 0, 0],
[0, 0, 2],
[3, 0, 2]],
[[0, 0, 4],
[0, 0, 4],
[0, 0, 4]],
[[5, 0, 0],
[5, 0, 6],
[0, 6, 6]],
[[7, 0, 8],
[0, 0, 0],
[9, 0,10]]])
我想要的输出是子数组的位置以及代表中心的 x 和 y 坐标:
#output:
array([[ 0., 0., 0.],
[ 0., 1.5, 2.],
[ 0., 2., 0.],
[ 1., 1., 2.],
[ 2., 0.5, 0.],
[ 2., 1.66666667, 1.66666667],
[ 3., 0., 0.],
[ 3., 0., 2.],
[ 3., 2., 0.],
[ 3., 2., 2.]])
我对其他输出持开放态度,但这样的事情会很棒!
提前致谢!
【问题讨论】:
-
如果您事先知道区域的数量,则处理此问题的标准技术是k-means clustering;它们是支持 k-means 的 Python 库,例如 scikit。快速的 Google 显示有一个模块可以使用 Pandas 进行 k-means:k-means-plus-plus,但它只是 Python 2。
-
它是一个 4D 数组。什么是区域?什么是索引?
-
@PM2Ring 谢谢!我会看看那个工具
-
@B.M.它是 3D,我在问题中给出的尺寸是错误的,我将对其进行编辑。区域是一组具有相同值的单元格,索引是 2d 子数组在 3d 数组中的位置
标签: python arrays numpy pandas scipy