代码之家  ›  专栏  ›  技术社区  ›  Nikita Vlasenko

CSV Writer在保存包含多个零的矩阵时会忽略许多项

  •  2
  • Nikita Vlasenko  · 技术社区  · 6 年前

    python csv 按以下方式编写:

    def write_to_disk(csv_path, mtx_norm, cell_ids, gene_symbols):
        print('writing the results to disk')
        with open(csv_path,'w', encoding='utf8') as csvfile:
            writer = csv.writer(csvfile, delimiter=',')
            writer.writerow(["", cell_ids])
            for idx, row in enumerate(mtx_norm):
                writer.writerow([gene_symbols[idx], row])
    

    我在矩阵里有很多零,还有什么 csv writer 所做的是缩小所有有许多相似数字(在本例中为零)的空间 ... 性格。因此,它被保存为一组具有不同长度的数组。然后,我有困难打开和使用它。我可以开非合同的 csv文件 按以下方式:

    data = np.genfromtxt(open(path_to_data, "r"), delimiter=",")
    

    文件夹。有没有办法避免这种收缩和/或打开这两种类型的门 将它们转换为一种格式的文件- numpy 2D array 没有这些 ... 项目?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Poolka    6 年前

    如果使用numpy数组,应该考虑使用 numpy.savetxt() 改为函数 https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.savetxt.html . 例如:

    import numpy as np
    
    a = np.random.randint(0, 10, (10, 10), dtype=int)
    a[1:5, 1:8] = 0
    np.savetxt('1.txt', a, fmt='%d', delimiter=',')
    

    文件内容:

    0,8,5,8,0,7,5,8,0,9
    0,0,0,0,0,0,0,0,3,4
    5,0,0,0,0,0,0,0,7,3
    9,0,0,0,0,0,0,0,7,5
    7,0,0,0,0,0,0,0,6,9
    9,9,9,9,2,7,5,0,0,7
    4,6,9,0,7,5,2,4,7,5
    2,5,1,9,4,9,3,5,3,7
    3,3,6,8,5,7,5,8,5,5
    9,4,1,2,0,9,2,2,8,2
    

    numpy.loadtxt() https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html :

    a = np.loadtxt('1.txt', delimiter=',', dtype=int)
    

    那么 a 是:

    array([[0, 8, 5, 8, 0, 7, 5, 8, 0, 9],
           [0, 0, 0, 0, 0, 0, 0, 0, 3, 4],
           [5, 0, 0, 0, 0, 0, 0, 0, 7, 3],
           [9, 0, 0, 0, 0, 0, 0, 0, 7, 5],
           [7, 0, 0, 0, 0, 0, 0, 0, 6, 9],
           [9, 9, 9, 9, 2, 7, 5, 0, 0, 7],
           [4, 6, 9, 0, 7, 5, 2, 4, 7, 5],
           [2, 5, 1, 9, 4, 9, 3, 5, 3, 7],
           [3, 3, 6, 8, 5, 7, 5, 8, 5, 5],
           [9, 4, 1, 2, 0, 9, 2, 2, 8, 2]])