将numpy保存的文件读入列表

时间:2016-08-15 08:08:24

标签: python numpy

从早期的numpy进程中我保存了一个包含数组的列表。像这样,

np.savetxt('CHARS.out', chars, delimiter=',', fmt="%s")

当我尝试使用此代码将文件读取到列表供以后使用时,

chars = open('chars.out', 'r')
chars = np.loadtxt(chars, delimiter=',')

我收到以下错误,

  

ValueError:无法将字符串转换为float:b'L'

另外使用以下方式将其读取到列表可以正常工作,但输出不是预期的

chars = open('chars.out', 'r')
chars = chars.readlines()

以下输出是这样的,

['L\n', '3\n', 'b\n', 'p\n',......

它在每个字符的末尾附加了新的行字符。如何在python中读取numpy savetxt文件到列表或数组?

感谢

2 个答案:

答案 0 :(得分:1)

您可以删除换行符:

对于Python 2.x:

strippedChars = map(lambda string: string.strip(), chars)

对于Python 3.x

strippedChars = list(map(lambda string: string.strip(), chars))

代码示例:

np.savetxt('CHARS.out', chars, delimiter=',', fmt="%s")
chars = open('chars.out', 'r')
chars = chars.readlines()
strippedChars = list(map(lambda string: string.strip(), chars))

答案 1 :(得分:1)

首先,savetxt保存一个数组。如果传递包含数组的列表,则只能有效地保存数组。

其次,要回读数组,您不需要打开文件,而是将文件名提供给genfromtxt,如下所示:

chars = np.genfromtxt('chars.out', delimiter=',')

这会将数组放在chars中,如果您想在列表中使用数组,只需执行[chars]

修改

如果你需要将数组作为一个字符串数组读取,并且每个字符串都以换行符结尾,我们可以将其视为分隔符,那么你就读取了数组:

chars = np.genfromtxt('chars.out', delimiter='\n', dtype=str)