zoukankan      html  css  js  c++  java
  • 将数组,矩阵存入csv文件中

    我们在做各种模型训练时,往往会先将数据处理成矩阵,然后交给建模的人去训练。这时通常数据清洗者提交的是保存了矩阵的文件,一般为TXT或csv,接下来主要讲解我在实现这个过程中遇到的一些问题。

    import numpy
    numpy.savetxt('new.csv', my_matrix, delimiter=',')

    看上面这段d代码,通常我们会直接使用上面这两句代码来进行保存。但通常会遇到下面两类错误:

    1. 类型匹配错误

    如上面截图。原因是:loadtxt()这个函数本身在默认情况下认为数据元素都是数值型的,所以用%.18e的格式去读取。所以当遇到str或其他非数值型时就会出错。这里是的指定数据类型解决的。正确代码如下:

    import numpy
    numpy.savetxt('new.csv', my_matrix, fmt='%s', delimiter=',')

    2. 存入csv文件时,部分数据丢失

    原因,csv默认是用逗号分隔的,所以如果你的数据中含有逗号,就会被它识别,因此在存入之前,应先将逗号进行提换或者加转义字符。

    这里补充一下saveTXT的原型:

    numpy.savetxt

    numpy.savetxt(fnameXfmt='%.18e'delimiter=' 'newline=' 'header=''footer=''comments='# ')[source]

    Save an array to a text file.

    Parameters:

    fname : filename or file handle

    If the filename ends in .gz, the file is automatically saved in compressed gzip format. loadtxt understands gzipped files transparently.

    X : array_like

    Data to be saved to a text file.

    fmt : str or sequence of strs, optional

    A single format (%10.5f), a sequence of formats, or a multi-format string, e.g. ‘Iteration %d – %10.5f’, in which case delimiter is ignored. For complex X, the legal options for fmt are:

    1. a single specifier, fmt=’%.4e’, resulting in numbers formatted

      like ‘ (%s+%sj)’ % (fmt, fmt)

    2. a full string specifying every real and imaginary part, e.g.

      ‘ %.4e %+.4ej %.4e %+.4ej %.4e %+.4ej’ for 3 columns

    3. a list of specifiers, one per column - in this case, the real

      and imaginary part must have separate specifiers, e.g. [‘%.3e + %.3ej’, ‘(%.15e%+.15ej)’] for 2 columns

    delimiter : str, optional

    String or character separating columns.

    newline : str, optional

    String or character separating lines.

    New in version 1.5.0.

    header : str, optional

    String that will be written at the beginning of the file.

    New in version 1.7.0.

    footer : str, optional

    String that will be written at the end of the file.

    New in version 1.7.0.

    comments : str, optional

    String that will be prepended to the header and footer strings, to mark them as comments. Default: ‘# ‘, as expected by e.g. numpy.loadtxt.

    New in version 1.7.0.

      

    Notes

    Further explanation of the fmt parameter (%[flag]width[.precision]specifier):

    flags:

    - : left justify

    + : Forces to precede result with + or -.

    0 : Left pad the number with zeros instead of space (see width).

    Minimum number of characters to be printed. The value is not truncated if it has more characters.
    precision:
    • For integer specifiers (eg. d,i,o,x), the minimum number of digits.
    • For e, E and f specifiers, the number of digits to print after the decimal point.
    • For g and G, the maximum number of significant digits.
    • For s, the maximum number of characters.
    specifiers:

    c : character

    d or i : signed decimal integer

    e or E : scientific notation with e or E.

    f : decimal floating point

    g,G : use the shorter of e,E or f

    o : signed octal

    s : string of characters

    u : unsigned decimal integer

    x,X : unsigned hexadecimal integer

    This explanation of fmt is not complete, for an exhaustive specification see [R280].

  • 相关阅读:
    jQuery使用(十三):工具方法
    jQuery使用(十二):工具方法之type()之类型判断
    马化腾成中国新首富:一个多月身家增长77亿美元
    滴滴:设立1000万美元专项基金,援助海外司机骑手
    疫情查询
    自动获取时间html代码
    搜索引擎你还用百度吗?为什么?
    实现QQ内打开链接跳转至浏览器
    QQ靓号资料空白且空间开通教程
    斐波那契数列计算html代码
  • 原文地址:https://www.cnblogs.com/no-tears-girl/p/6892679.html
Copyright © 2011-2022 走看看