添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用函数 numpy.savetxt 将数组写入文件

@array_function_dispatch(_savetxt_dispatcher)
def savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='',
            footer='', comments='# ', encoding=None):
  • fname:保存文件名,可以是.txt/.csv
  • X:一维或二维数组
  • fmt:格式化结果,默认为%.18e,则数值23保存为2.300000000000000000e+02
  • delimiter:分隔符,默认为空字符,可设置为空格或者逗号等等
  • newline:每行数值如何结尾,默认为换行符
  • header:写入文件开头,默认为空
  • footer:写入文件末尾,默认为空
  • 使用函数loadtxt从文件读取数组

    @set_module('numpy')
    def loadtxt(fname, dtype=float, comments='#', delimiter=None,
                converters=None, skiprows=0, usecols=None, unpack=False,
                ndmin=0, encoding='bytes', max_rows=None):
    
  • fname:文件名
  • dtype:读取类型,默认为float
  • delimiter:分隔符
  • 写入和读取一个二维数组,保存为.csv文件

    # -*- coding: utf-8 -*-
    @author: zj
    @file:   main.py
    @time:   2020-01-26
    import numpy as np
    if __name__ == '__main__':
        # 分隔符使用空格
        delimiter = ' '
        # 文件名
        file_name = 'np.csv'
        # 创建二维数组
        data = np.random.randn(2, 4)
        print('data:', data)
        # 保存数据
        np.savetxt(file_name, data, fmt='%.4f', delimiter=delimiter)
        # 解析数组
        res = np.loadtxt(file_name, delimiter=delimiter)
        print('res:', res)
    

    文件保存如下:

    0.7206 -0.8134 -0.6305 0.1064
    0.0843 0.9964 1.5460 0.8704
    

    输出结果如下:

    data: [[ 0.72061082 -0.81343968 -0.63050239  0.10642858]
     [ 0.08428892  0.99644281  1.54604727  0.87040002]]
    res: [[ 0.7206 -0.8134 -0.6305  0.1064]
     [ 0.0843  0.9964  1.546   0.8704]]
    

    如何将float数组转换成int数组

    因为默认数组保存为float格式,所以读取文件时得到的也是浮点型数组,转换成整型格式需要额外使用函数astype,而不是设置dtype属性

    # 解析数组
    res = np.loadtxt(file_name, delimiter=delimiter).astype(np.int)
    print('res:', res)
    # 输出结果如下
    data: [[ -6.47453318   0.63819837 -12.63992178   7.79347093]
     [  0.97600354   5.12906234  -0.49724709  -2.01769487]]
    res: [[ -6   0 -12   7]
     [  0   5   0  -2]]