解决numpy的ndarray转为字符串,再转为ndarray的问题

您所在的位置:网站首页 python把list转换为string 解决numpy的ndarray转为字符串,再转为ndarray的问题

解决numpy的ndarray转为字符串,再转为ndarray的问题

2023-09-22 10:51| 来源: 网络整理| 查看: 265

arr =np.array([1,2,3,4,5,6]) str = arr.tostring() print np.fromstring(str,dtype=int) >>>[1 2 3 4 5 6]

假设有一个numpy数组,(它可以与其他类型一起工作,但您需要进行一些细微的修改)。

a = np.array([0, 3, 5]) a_str = ','.join(str(x) for x in a) # '0,3,5' a2 = np.array([int(x) for x in a_str.split(',')]) # np.array([0, 3, 5])

如果有浮点数组,请确保用最后一行中的float替换int。

还可以使用__repr__()方法,它的优点是可以用于多维数组:

from numpy import array numpy.set_printoptions(threshold=numpy.nan) a = array([[0,3,5],[2,3,4]]) a_str = a.__repr__() # 'array([[0, 3, 5],\n [2, 3, 4]])' a2 = eval(a_str) # array([[0, 3, 5], # [2, 3, 4]])

如果使用tostring,则会丢失有关形状和数据类型的信息:

>>> import numpy as np >>> a = np.arange(12).reshape(3, 4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> s = a.tostring() >>> aa = np.fromstring(a) >>> aa array([ 0.00000000e+000, 4.94065646e-324, 9.88131292e-324, 1.48219694e-323, 1.97626258e-323, 2.47032823e-323, 2.96439388e-323, 3.45845952e-323, 3.95252517e-323, 4.44659081e-323, 4.94065646e-323, 5.43472210e-323]) >>> aa = np.fromstring(a, dtype=int) >>> aa array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>> aa = np.fromstring(a, dtype=int).reshape(3, 4) >>> aa array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])

这意味着您必须将元数据和数据一起发送给收件人。要交换自动一致的对象,请尝试cPickle:

>>> import cPickle >>> s = cPickle.dumps(a) >>> cPickle.loads(s) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]])

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3