此问题已经在这里有了答案:
我有一个带有X
的3D整数张量X.shape=(m, n, k)
我想将X
当作(m, n)
矩阵,其条目为k
大小的整数矢量,并计算每行中有多少个此类唯一条目。因此,例如
>>> X
array([[[0, 1, 2],
[0, 1, 2],
[1, 2, 3],
[1, 2, 3]],
[[3, 4, 5],
[4, 5, 6],
[5, 6, 7],
[6, 7, 8]]])
>>> X.shape
(2, 4, 3)
>>> count_unique(X)
[2, 4]
因为在张量的第一行中有2个唯一矢量,在第二行中有4个唯一矢量
用于返回实际唯一矢量的奖励点,例如
>>> get_unique(X)
[[[0, 1, 2], [1, 2, 3]],\
[3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8]]]
# flatten your list:
flat_X = [item for sublist in X for item in sublist]
# build your unique list
unique_list = []
for element in flat_X:
if element not in unique_list:
unique_list.append(element)
输出:
> unique list
[[0, 1, 2], [1, 2, 3], [3, 4, 5], [4, 5, 6], [5, 6, 7], [6, 7, 8]]