在实际工作中有个需求是需要将 Numpy
的二进制对象转换为字符串,经过某种处理之后,再将字符串还原为 Numpy
对象,这就需要用到 Numpy
自带的 tostring
和 fromstring
方法。在此记录下其使用方法。
1. tostring
方法
将 numpy
对象转换为字符串:
In [1]: import numpy as np
In [2]: a = np.array([[1,2], [3,4]])
In [3]: a
Out[3]:
array([[1, 2],
[3, 4]])
In [4]: b = a.tostring()
In [5]: b
Out[5]: b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00'
In [6]:
2. fromstring
方法
fromstring
或者 frombuffer
可以将字符串对象转换为对应的 numpy
对象。
In [7]: a.dtype
Out[7]: dtype('int32')
In [8]: c = np.fromstring(b, dtype=np.int32)
g:\python\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: The binary mode of fromstring is deprecated, as it behaves surprisingly on unicode inputs. Use frombuffer instead
"""Entry point for launching an IPython kernel."""
In [9]: c = np.frombuffer(b, dtype=np.int32)
In [10]: c
Out[10]: array([1, 2, 3, 4])
In [11]: c.shape=(2,2)
In [12]: c
Out[12]:
array([[1, 2],
[3, 4]])
In [13]:
注意:Python3 中更推荐使用 frombuffer
来将字符串转换为二进制,并且要设置转换的 dtype
类型,否则默认按照一维进行转换。
3. 文本文件处理
对于文本文件,推荐使用
loadtxt
genfromtxt
savetxt
4. 二进制文件处理
对于二进制文本文件,推荐使用
save
load
savez