Numpy 对象和字符串相互转换

在实际工作中有个需求是需要将 Numpy 的二进制对象转换为字符串,经过某种处理之后,再将字符串还原为 Numpy 对象,这就需要用到 Numpy 自带的 tostringfromstring 方法。在此记录下其使用方法。

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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值