Python 设置文字在 numpy 唯一数组上不起作用

Python set literals didn't work on numpy unique array

我尝试使用 python set literals on numpy unique like

import numpy as np
# col_value_series is a series of strings
# it doesn't run
uniques = {np.unique(col_value_series)}

# it works
uniques = set(np.unique(col_value_series))

我必须使用 set 而不是 {} 来获取一组唯一值,那有什么不同呢?他们不一样吗?

不,它们不一样。

{np.unique(col_value_series)}(或者,一般来说,{x})是一个元素的集合。为此,元素 x 必须是可散列的 [glossary],但事实并非如此。考虑:

In [1]: import numpy as np

In [2]: {np.array([1])}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-f73a363763ae> in <module>()
----> 1 {np.array([1])}

TypeError: unhashable type: 'numpy.ndarray'

set(np.unique(col_value_series))(或set(x))是一组取自可迭代x的元素。为此,参数 x 必须是可迭代的,并且它的元素必须是可散列的。满足了这些条件,就可以了。

In [3]: set(np.array([1]))
Out[3]: {1}