python - 在 python 中将 numpy、list 或 float 转换为字符串

标签 python numpy

我正在编写一个 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/

相关文章:

python - Lucid 包使用 Tensorflow 包时出现问题

python - 使用 python 3 urllib 访问网站但失败

python - 如何使用Numpy解决Type Error

string - numpy 大数组到字符串获取

python - 按索引复制 numpy 数组的单个轴

python - 在 python 中用子列表拆分字符串

Python:为什么函数返回一个字典,其中所有值都通过赋值填充?

python - 在 Python 中使用 ReportLabs 生成报告

python - Numpy matmul - 当前不支持对象数组

python - Numpy 二维数组按行减法