Sha*_*ang 8 arrays unicode numpy python-3.x pandas
在Python 3中,我有以下NumPy
数组strings
.
每个string
中NumPy
阵列的形式b'MD18EE
,而不是MD18EE
.
例如:
import numpy as np
print(array1)
(b'first_element', b'element',...)
Run Code Online (Sandbox Code Playgroud)
通常,人们会.decode('UTF-8')
用来解码这些元素.
但是,如果我尝试:
array1 = array1.decode('UTF-8')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
AttributeError: 'numpy.ndarray' object has no attribute 'decode'
Run Code Online (Sandbox Code Playgroud)
如何从NumPy
数组中解码这些元素?(也就是说,我不想要b''
)
编辑:
假设我只处理了Pandas
DataFrame
以这种方式编码的某些列.例如:
import pandas as pd
df = pd.DataFrame(...)
df
COL1 ....
0 b'entry1' ...
1 b'entry2'
2 b'entry3'
3 b'entry4'
4 b'entry5'
5 b'entry6'
Run Code Online (Sandbox Code Playgroud)
hpa*_*ulj 12
你有一个字节串数组; dtype是S
:
In [338]: arr=np.array((b'first_element', b'element'))
In [339]: arr
Out[339]:
array([b'first_element', b'element'],
dtype='|S13')
Run Code Online (Sandbox Code Playgroud)
astype
很容易将它们转换为unicode,这是Py3的默认字符串类型.
In [340]: arr.astype('U13')
Out[340]:
array(['first_element', 'element'],
dtype='<U13')
Run Code Online (Sandbox Code Playgroud)
还有一个字符串函数库 - 将相应的str
方法应用于字符串数组的元素
In [341]: np.char.decode(arr)
Out[341]:
array(['first_element', 'element'],
dtype='<U13')
Run Code Online (Sandbox Code Playgroud)
的astype
速度更快,但decode
允许您指定的编码.
另请参见如何解码dtype = numpy.string_的numpy数组?
如果您希望结果是 (Python) 字符串列表,您可以使用列表理解:
>>> l = [el.decode('UTF-8') for el in array1]
>>> print(l)
['element', 'element 2']
>>> print(type(l))
<class 'list'>
Run Code Online (Sandbox Code Playgroud)
或者,如果您想将其保留为 Numpy 数组,您可以使用np.vectorize
创建矢量化解码器函数:
>>> decoder = np.vectorize(lambda x: x.decode('UTF-8'))
>>> array2 = decoder(array1)
>>> print(array2)
['element' 'element 2']
>>> print(type(array2))
<class 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10832 次 |
最近记录: |