如何从" str"转换类型到" numpy.string _"每个ndarray项目?

时间:2018-01-25 03:35:30

标签: python-3.x numpy

环境:Python 3.6,Numpy 1.14.0

a = {ndarray}['中','中']

我需要将str类型转换为numpy.string_

单个str可以像这样转换:np.string_('中', encoding='utf-8')]

但是,如何使用单个语句转换ndarray而不是循环?

a.astype(np.string_)会引发错误:

  

{SystemError}返回了错误集

的结果

1 个答案:

答案 0 :(得分:1)

np.char具有将str方法应用于数组元素的函数:

In [367]: a = np.array(['中','中'])
In [368]: np.string_(a[0], encoding='utf-8')
Out[368]: b'\xe4\xb8\xad'
In [369]: np.char.encode(a, encoding='utf-8')
Out[369]: array([b'\xe4\xb8\xad', b'\xe4\xb8\xad'], dtype='|S3')

np.string_是字节串,而np.str是unicode(在py3中)。因此,这会将'U1'数组转换为'S3'数组。

In [370]: a
Out[370]: array(['中', '中'], dtype='<U1')