我有一个不同长度的numpy数组列表,其中一些重复,如下所示:
import numpy as np
multi = [np.array([1, 2, 3]),
np.array([1, 2]),
np.array([1, 2, 3, 4]),
np.array([1, 2, 3]),
np.array([1, 2])]
从这个列表中,我想要一个唯一数组的计数(如序列上的直方图)。
由于 numpy 数组不可散列,因此我通过将数组转换为其字符串表示形式并将其用作与此方法itertools.groupby
类似的分组键来执行此操作,
import itertools
sorted_strings = sorted([str(p) for p in multi])
groups = [(k, len(list(g))) for k, g in itertools.groupby(sorted_strings)]
print(groups)
输出是:
[('[1 2 3 4]', 1), ('[1 2 3]', 2), ('[1 2]', 2)]
这是正确的,但我想知道是否有更优雅的解决方案,或者是否有比数组列表更好的方法来存储这些数据。