0

リストをマトリックスに操作しようとしていますが、何らかの理由で機能しません...

    import numpy as np

    dcd=np.load('dcd_250.npy')
    #4. write the dcd into an array
    print 'Length of dcd', len(dcd)

    al_gtps = np.array(dcd).reshape(250000,5416)            # reshape(SNP no, ind no)
    print 'Size of al_gtps', al_gtps.size                                                 

    gtps_T=al_gtps.T

    print 'Size of gtps_T', gtps_T.size

    allelic_gtps=[]
    check=[]
    #5. turn into strings
    for k in gtps_T:
        check=k
        allelic_gtps.append("%s" % ' '.join(map(str,k)))

    print 'Length of allelic_gtps', len(allelic_gtps)


    together=[]
    for each in allelic_gtps:
        for ch in each:
            if ch!=' ':
                together.append(ch)
        else:
             pass

    matrix=np.array(together).reshape(5416,500000)

    np.save('matrix.npy', matrix)

配列の長さは次のとおりです。

Length of dcd 1354000000
Size of al_gtps 1354000000
Size of gtps_T 1354000000
Length of allelic_gtps 5416
Length of together 2708000000

最終的な行列には、それぞれ 500 000 列の 5416 行が必要です。これは 2 708 000 000 を与え、それが私が「一緒に」持っているものです。ただし、次のエラー メッセージが表示されます。

    Traceback (most recent call last):
    File "p3_gtp_format.py", line 51, in <module>
    matrix=np.array(together).reshape(5416,500000)
    ValueError: total size of new array must be unchanged

私は大容量メモリマシンで作業しているので、これはメモリの問題ではありません。この同じスクリプトは、行列のサイズが 5416 行 200 000 列の小さなデータセットで機能しました。何か案は?

4

0 に答える 0