例如,如果我有一个这样的2D列表:
a = [[0,0], [0,0], [0,0], [0,2], [0,2], [1,0]]
对于上面的列表a:
a
a[0]=a[1]=a[2]=[0,0] a[3]=a[4]=[0,2]
我希望将a转换为[0,0,0,1,1,2]也就是说,相同的元素会被标记为相同的值(这里的元素是一个1D列表)有没有办法在pytorch或numpy?
[0,0,0,1,1,2]
pjngdqdw1#
NumPy并不是我的强项,但我认为这会给予你想要的结果:
import numpy as np keys, index = np.unique(a, axis = 0, return_inverse = True) index
这是通过在输入列表的第一个轴上调用numpy.unique来实现的,它将比较每个子列表。我使用return_inverse参数来指示函数返回每个子列表对应的唯一数组的索引。这段代码保留了index中的顺序和keys中的唯一键。通过执行keys[index],你就可以重建原始数组。
numpy.unique
return_inverse
index
keys
keys[index]
1条答案
按热度按时间pjngdqdw1#
NumPy并不是我的强项,但我认为这会给予你想要的结果:
这是通过在输入列表的第一个轴上调用
numpy.unique
来实现的,它将比较每个子列表。我使用return_inverse
参数来指示函数返回每个子列表对应的唯一数组的索引。这段代码保留了index
中的顺序和keys
中的唯一键。通过执行keys[index]
,你就可以重建原始数组。