2016-11-04 48 views

回答

0

你的意思是?

result = [] 
file = open('yourfile.txt') 
for line in file.readlines(): 
    result.append(line.split()) 

file.close() 
print(result) 
+0

此外,如果这不是你的意思,它会帮助你使用分裂()和readlines方法() – YpsilonZett

0

可以使用read_csv与参数skip_blank_lines为获得团体:

import pandas as pd 
import numpy as np 
from pandas.compat import StringIO 

temp=u""" 
7+3j;2+1j 
1+6j;5+1j 

8+3j;1+7j 
5+4j;4+1j 

6+2j;2+1j 
8+4j;9+3j 
""" 
#after testing replace StringIO(temp) to filename 
df = pd.read_csv(StringIO(temp), 
       sep=";", #in real data use sep='\t' 
       skip_blank_lines=False, 
       names=np.arange(2)) #in real data use 200 
print (df) 
     0  1 
0 NaN NaN 
1 7+3j 2+1j 
2 1+6j 5+1j 
3 NaN NaN 
4 8+3j 1+7j 
5 5+4j 4+1j 
6 NaN NaN 
7 6+2j 2+1j 
8 8+4j 9+3j 

iloc选择第一列创建索引,通过isnull得到面膜,然后应用cumsum - 在index创建具有相同值的组:

df.index = df.iloc[:, 0].isnull().cumsum() 

然后删除所有行,其中0在第一列通过dropna

df = df.dropna(subset=[0]) 

转换为complex并获得幅度由numpy.angle

df = df.applymap(lambda x: np.angle(np.complex(x))) 
print (df) 
      0   1 
0      
1 0.404892 0.463648 
1 1.405648 0.197396 
2 0.358771 1.428899 
2 0.674741 0.244979 
3 0.321751 0.463648 
3 0.463648 0.321751 

最后groupby通过索引并转换为numpy的阵列由values

print (df.groupby(level=0).apply(lambda x: x.values).values) 
[array([[ 0.40489179, 0.46364761], 
     [ 1.40564765, 0.19739556]]) 
array([[ 0.35877067, 1.42889927], 
     [ 0.67474094, 0.24497866]]) 
array([[ 0.32175055, 0.46364761], 
     [ 0.46364761, 0.32175055]])] 

如果不需要团体使用:

import pandas as pd 
import numpy as np 
from pandas.compat import StringIO 

temp=u""" 
7+3j;2+1j 
1+6j;5+1j 

8+3j;1+7j 
5+4j;4+1j 

6+2j;2+1j 
8+4j;9+3j 
""" 
#after testing replace StringIO(temp) to filename 
df = pd.read_csv(StringIO(temp), 
       sep=";", #in real data use sep='\t' 
       names=np.arange(2)) #in real data use 200 
print (df) 
     0  1 
0 7+3j 2+1j 
1 1+6j 5+1j 
2 8+3j 1+7j 
3 5+4j 4+1j 
4 6+2j 2+1j 
5 8+4j 9+3j 
df = df.applymap(lambda x: np.angle(np.complex(x))) 
print (df) 

      0   1 
0 0.404892 0.463648 
1 1.405648 0.197396 
2 0.358771 1.428899 
3 0.674741 0.244979 
4 0.321751 0.463648 
5 0.463648 0.321751 

print (df.values) 
[[ 0.40489179 0.46364761] 
[ 1.40564765 0.19739556] 
[ 0.35877067 1.42889927] 
[ 0.67474094 0.24497866] 
[ 0.32175055 0.46364761] 
[ 0.46364761 0.32175055]] 
相关问题