numpy.ndarrayを文字列(またはバイト)に変換し、numpy.ndarrayに変換し直します



Convert Numpy Ndarray String



解決:

あなたは使用することができますこのためのfromstring()メソッド:

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

短い答えで申し訳ありませんが、コメントするのに十分なポイントがありません。データ型を述べることを忘れないでください。そうしないと、苦痛の世界になってしまいます。



に注意してくださいfromstring numpy1.14以降

sep:str、オプション



データ内の数値を区切る文字列。要素間の余分な空白も無視されます。

バージョン1.14以降非推奨:デフォルトのsep = ''を渡すと、この関数の非推奨のバイナリモードがトリガーされるため、非推奨になります。このモードは、文字列を10進数のASCIIテキストではなく、バイナリバイトとして解釈します。これは、buffer(string、dtype、count)からのスペルが適切な操作です。文字列にUnicodeテキストが含まれている場合、fromstringのバイナリモードは最初にutf-8(python 3)またはデフォルトのエンコーディング(python 2)のいずれかを使用してバイトにエンコードしますが、どちらも正常な結果を生成しません。


使用する場合tostringは、形状とデータ型の両方に関する情報を失います。



>>> numpyを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]]) 

整数の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])

フロートの配列がある場合は、必ず置き換えてくださいint by最後の行に浮かぶ。

また、使用することができます__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]])