我正在编写一个 python 函数来将数据附加到文本文件,如下所示,
问题是变量 var
可能是一维 numpy 数组、一维列表或只是一个 float ,我知道如何转换 numpy.array
/list
/float
分别转换为字符串(意味着给定类型),但是有没有一种方法可以在不知道其类型的情况下将 var
转换为字符串?
def append_txt(filename, var):
my_str = _____ # convert var to string
with open(filename,'a') as f:
f.write(my_str + '\n')
编辑 1:感谢您的评论,抱歉,我的问题可能不够清楚。
numpy 上的 str(var)
会给出类似于 []
的内容。例如,var = np.ones((1,3)), str(var)
将给出 [[1。 1. 1.]]
,[]
是不需要的,
编辑 2:因为我想写干净的数字(意思是没有 [
或 ]
),似乎类型检查是不可避免的。
最佳答案
类型检查不是做你想做的事情的唯一选择,但绝对是最简单的选择之一:
import numpy as np
def to_str(var):
if type(var) is list:
return str(var)[1:-1] # list
if type(var) is np.ndarray:
try:
return str(list(var[0]))[1:-1] # numpy 1D array
except TypeError:
return str(list(var))[1:-1] # numpy sequence
return str(var) # everything else
编辑:另一种简单的方法,不使用类型检查(感谢 jtaylor 给我这个想法),是将所有内容转换为相同的类型(np.array
) 然后将其转换为字符串:
import numpy as np
def to_str(var):
return str(list(np.reshape(np.asarray(var), (1, np.size(var)))[0]))[1:-1]
示例使用(两种方法给出相同的结果):
>>> to_str(1.) #float
'1.0'
>>> to_str([1., 1., 1.]) #list
'1.0, 1.0, 1.0'
>>> to_str(np.ones((1,3))) #np.array
'1.0, 1.0, 1.0'
关于python - 在 python 中将 numpy、list 或 float 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914735/