Python 计算 ndarray 中有多少个唯一值

问题描述 投票:0回答:1

抱歉,我一直在尝试在 Stackoverflow 上找到的所有策略来解决类似问题,但它仍然不适用于我的 ndarray 类型。它给出了错误,我不知道从哪里开始

我有一个(可能很复杂)ndarray,如下所示:

我将以下多个内容堆叠在一个数组中: my_array = array([mini_array1], [mini_array2], [mini_array3] ...)

每个mini_array都是这样的:

mini_array1 = ([(array([[ 5.95341123, 14.6624946 ],
   [ 5.88628672, 14.70790709],
   [ 5.79873942, 14.68244049]]), 
array([[48.208864, 48.218841, 48.228818]]), 
array([[4832, 4833, 4834]], dtype=uint16))])

mini_array2 = (array([[14.08362876, 17.88082237], [14.42213575, 18.09923094]]), 
array([[48.18891 , 48.198887]]), 
array([[4830, 4831]], dtype=uint16))

mini_array3 = (array([[14.08362876, 17.88082237], [14.42213575, 18.09923094]]), 
array([[48.18891 , 48.198887]]), 
array([[4831, 4832]], dtype=uint16))

我想获取所有迷你数组的第三个数组中唯一值的数量。

例如,对于 mini_array1、mini_array2 和 mini_array3, 唯一值为 4830、4831、4832、4833、4834,答案 = 5。

我尝试展平数组,但列表中仍然有“数组”,我真的迷失在这里,抱歉!

python numpy-ndarray count-unique
1个回答
0
投票

似乎给定的数组格式并不清晰,因为

mini_array1
是一个单元素
list
包含一个
np.array
嵌套数组。 这种情况应该避免。

如果您仍然想执行示例中给出的操作,请考虑以下代码:

values = mini_array1[0][2]
for mini_array in mini_array2, mini_array3:
    values = np.concatenate((values, mini_array[2]), axis=1)

np.unique(values)
# >>> array([4830, 4831, 4832, 4833, 4834], dtype=uint16)

但是,我强烈建议您删除嵌套数组结构,这通常是此类错误的根源。

© www.soinside.com 2019 - 2024. All rights reserved.