抱歉,我一直在尝试在 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。
我尝试展平数组,但列表中仍然有“数组”,我真的迷失在这里,抱歉!
似乎给定的数组格式并不清晰,因为
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)
但是,我强烈建议您删除嵌套数组结构,这通常是此类错误的根源。