我有一个大的三维数组(10000,3,3)。其中我想找到每个区域的中心坐标(具有相同编号的簇)。每个区域可以有2个或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坐标:
^{pr2}$我对其他的输出很开放,但是像这样的东西会很棒的!在
提前谢谢!在
你在找这个吗?在
^{pr2}$您可能还想查看处理与此相关的问题的^{} 包。[免责声明:我是合著者]。它应该比}和{}。在
numpy-indexed
(另一个答案中提到的包)快,因为它使用bincount
,而不是{但是,这里的任务非常简单,可以直接使用
bincount
:或者,如果你想“作弊”,你可以使用scipy的ndimage.measurements中的一个函数。在
使用numpy_indexed包中的功能(免责声明:我是其作者),可以构造一个完全矢量化的解决方案(即,没有for循环):
对于大的投入,这应该会更有效率。在
请注意,如果标签在每个子阵列中不是唯一的(它们在您的示例中似乎是,但这没有明确说明),但是您仍然希望只取每个子阵列的平均值,您可以简单地写下:
^{pr2}$也就是说,通过子数组索引和标签的唯一元组进行分组。在
相关问题 更多 >
编程相关推荐