从早期的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文件到列表或数组?
感谢
答案 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)