如何不使用set()从列表中删除重复的元素?

时间:2019-11-19 00:24:13

标签: python list numpy

a = np.array([1, 1, 1,1,1,1])
b = np.array([2,2,2])

是两个numpy数组。然后让

c = [a]+[b]+[b]

很显然,c具有重复的元素b。现在,我希望从b中删除一个数组c,以便c仅包含一个a和一个b

我通常使用set()来删除列表中的重复元素。但是,如果这次是

set(c)

我会收到类似

的错误
TypeError: unhashable type: 'numpy.ndarray'

据我了解,numpy.ndarray不可散列。

上面的列表c只是一个例子,实际上我的c可能很长。那么,有什么好方法可以从numpy.array列表中删除重复的元素?

谢谢!


编辑:我希望我的回报是c = [a]+[b]

2 个答案:

答案 0 :(得分:1)

我认为问题与下面的问题相同。
Removing duplicates from a list of numPy arrays

import numpy as np
import cv2

cap = cv2.VideoCapture(r"C:\.....Blocks.mp4")
counter = 0
while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    cv2.imshow(frame)

    print("Frame number: " + str(counter))
    counter = counter+1
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

结果c:

import numpy as np

a = np.array([1, 1, 1,1,1,1])
b = np.array([2,2,2])

arraylist = [a, b, b]
L = {array.tostring(): array for array in arraylist}
c = [v for v in L.values()]
c

答案 1 :(得分:1)

您可以使用此

c = a.tolist() + b.tolist() + b.tolist()

然后

c = set(c)