环境:Python 3.6,Numpy 1.14.0
a = {ndarray}['中','中']
我需要将str
类型转换为numpy.string_
。
单个str
可以像这样转换:np.string_('中', encoding='utf-8')]
但是,如何使用单个语句转换ndarray而不是循环?
a.astype(np.string_)
会引发错误:
{SystemError}返回了错误集
的结果
答案 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')