如何将字符串转换回数组?

时间:2017-07-27 08:13:22

标签: python arrays python-3.x numpy

首先有办法将字符串转换为数组吗? 我正在寻找一种方法来解决这个问题:

['[[ 18.41978673]\n', ' [  0.34748864]\n', ' [ -9.55729142]]'] 

回到

[[ 18.41978673]
 [  0.34748864]
 [ -9.55729142]]

其次,是否存在将数组作为数组存储在.txt文件中而不必将其首先转换为字符串?
这是我用来存储它们的当前方法:

def add_to_file(self, weights):
    path = 'C:/Users\PycharmProjects\project Current'
    file = open(path, 'w')
    file.write(weights)
    file.close()

add_to_file(str(synaptic_weights))

尝试按以下方式进行操作时:

add_to_file(synaptic_weights)

我在控制台中有这个回复:

  

TypeError:write()参数必须是str,而不是numpy.ndarray

文件类型不必是.txt。如果有更好的存储阵列的方法,我很满意。

3 个答案:

答案 0 :(得分:2)

由于您使用的是Numpy数组,因此保存数组的简单方法是:

np.savetxt(file_name, my_array)

然后:

my_array = np.loadtxt(file_name)

答案 1 :(得分:1)

你需要跳过一些箍,但你可以使用json.loadsre.sub来完成。这是抢救数据并以可用形式存储数据的第一步。

import json
import re

data = json.loads(re.sub(r"'|\\n", '', str(l)))[0]
print(data)
# [[18.41978673], [0.34748864], [-9.55729142]]

现在您已经抢救了数据,您可以查看一些保存到文件的选项。

一个选项(可能是最好的)是使用np.save

np.save('data.npy', data) 

替代方案包括json.dumppickle.dump。这可行:

import json
json.dump(data, open('data.json', 'w'))

或者pickle

import pickle
pickle.dump(data, open('data.pkl', 'wb'))

答案 2 :(得分:1)

我通常使用

a = np.ones((3,3))
np.save('arr', a)

a2 = np.load('arr.npy')
print a2

请参阅此处的文档:np.savenp.load