与numpy的通用字符串比较

时间:2017-08-23 10:40:42

标签: python numpy

如果您有多个不同字符串类型的numpy数组,例如:

In [411]: x1.dtype
Out[411]: dtype('S3')

In [412]: x2.dtype
Out[412]: dtype('<U3')

In [413]: x3.dtype
Out[413]: dtype('>U5')

有什么方法可以检查它们是否是所有字符串而无需明确地与每种类型进行比较?

例如,我想做

In [415]: x1.dtype == <something>
Out[415]: True

In [416]: x2.dtype == <something> # same as above
Out[416]: True

In [417]: x3.dtype == <something> # same as above
Out[417]: True

比较str = no bueno:

In [410]: x3.dtype == str
Out[410]: False

1 个答案:

答案 0 :(得分:3)

一种方法是将np.issubdtypenp.character一起使用:

np.issubdtype(your_array.dtype, np.character)

例如:

>>> np.issubdtype('S3', np.character)
True

>>> np.issubdtype('<U3', np.character)
True

>>> np.issubdtype('>U5', np.character)
True

这是从NumPy文档中获取的NumPy dtype层次结构(如图像!)。如果你想检查常见的dtype类,它会非常有用:

enter image description here

正如您可以看到np.str_np.unicode_两个&#34;子类&#34; np.character