リストをマトリックスに操作しようとしていますが、何らかの理由で機能しません...
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 列の小さなデータセットで機能しました。何か案は?