2

ここMWEに私のコードがあります:

import numpy as np

# Load data from file.
data = np.genfromtxt('data_input', dtype=None, unpack=True)

print data

data_inputファイルのサンプルを次に示します。

01_500_aa_1000    990.0    990.0   112.5      0.2       72  0  0  1  0  0  0  0  0  0   0   0   0   1
02_500_aa_0950    990.0    990.0   112.5      0.2       77  0  0  1  0  0  0  0  0  0   0   0   0   1
03_500_aa_0600    990.0    990.0   112.5     0.18       84  0  0  1  0  0  0  0  0  0   0   0   0   1
04_500_aa_0700    990.0    990.0   112.5     0.18       84  0  0  1  0  0  0  0  0  0   0   0   0   1

常に出力されるため、unpack引数は機能していないようです。

[ ('01_500_aa_1000', 990.0, 990.0, 112.5, 0.2, 72, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('02_500_aa_0950', 990.0, 990.0, 112.5, 0.2, 77, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('03_500_aa_0600', 990.0, 990.0, 112.5, 0.18, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('04_500_aa_0700', 990.0, 990.0, 112.5, 0.18, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)]

誰でもこれを再現できますか?私は何を間違っていますか?

4

4 に答える 4

2

ではなく、numpy record arraygenfromtxtを返すため、これを取得しています。コンソールに表示すると、.listprint()list

from cStringIO import StringIO
raw = """01_500_aa_1000    990.0    990.0   112.5      0.2       72  0  0  1  0  0  0  0  0  0   0   0   0   1
02_500_aa_0950    990.0    990.0   112.5      0.2       77  0  0  1  0  0  0  0  0  0   0   0   0   1
03_500_aa_0600    990.0    990.0   112.5     0.18       84  0  0  1  0  0  0  0  0  0   0   0   0   1
04_500_aa_0700    990.0    990.0   112.5     0.18       84  0  0  1  0  0  0  0  0  0   0   0   0   1"""
sio = StringIO(raw)
data = genfromtxt(sio, dtype=None, unpack=False)
print data
print
print data.dtype

与えます:

[ ('01_500_aa_1000', 990.0, 990.0, 112.5, 0.2, 72, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('02_500_aa_0950', 990.0, 990.0, 112.5, 0.2, 77, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('03_500_aa_0600', 990.0, 990.0, 112.5, 0.18, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
 ('04_500_aa_0700', 990.0, 990.0, 112.5, 0.18, 84, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)]

[('f0', 'S14'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8'), ('f4', '<f8'), ('f5', '<i8'), ('f6', '<i8'), ('f7', '<i8'), ('f8', '<i8'), ('f9', '<i8'), ('f10', '<i8'), ('f11', '<i8'), ('f12', '<i8'), ('f13', '<i8'), ('f14', '<i8'), ('f15', '<i8'), ('f16', '<i8'), ('f17', '<i8'), ('f18', '<i8')]

unpack=Trueunpack=Falseが必要なため、同じものを返すように見えますrecarray。s を完全pandasに忘れてみることをお勧めします。aを にrecarray渡して、実際に s***を完了することができます。例えば、recarraypandas.DataFrame

df = DataFrame(data)
print df
print
print df.f0

収量:

               f0         f1         f2         f3         f4  f5  f6  f7  f8  \
0  01_500_aa_1000     990.00     990.00     112.50       0.20  72   0   0   1   
1  02_500_aa_0950     990.00     990.00     112.50       0.20  77   0   0   1   
2  03_500_aa_0600     990.00     990.00     112.50       0.18  84   0   0   1   
3  04_500_aa_0700     990.00     990.00     112.50       0.18  84   0   0   1   

   f9  f10  f11  f12  f13  f14  f15  f16  f17  f18  
0   0    0    0    0    0    0    0    0    0    1  
1   0    0    0    0    0    0    0    0    0    1  
2   0    0    0    0    0    0    0    0    0    1  
3   0    0    0    0    0    0    0    0    0    1  

0    01_500_aa_1000
1    02_500_aa_0950
2    03_500_aa_0600
3    04_500_aa_0700
Name: f0, dtype: object
于 2013-08-29T01:44:42.987 に答える
0

これを再現できます。ただし、dtypeをfloatに変更すると、

[[             nan              nan              nan              nan]
 [  9.90000000e+02   9.90000000e+02   9.90000000e+02   9.90000000e+02]
 [  9.90000000e+02   9.90000000e+02   9.90000000e+02   9.90000000e+02]
 [  1.12500000e+02   1.12500000e+02   1.12500000e+02   1.12500000e+02]
 [  2.00000000e-01   2.00000000e-01   1.80000000e-01   1.80000000e-01]
 [  7.20000000e+01   7.70000000e+01   8.40000000e+01   8.40000000e+01]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00]
 ...

このメーリングリストの質問からアイデアを得ました。

ここで与えられた答えを見てください。np.genfromtxt() は ndarray 型のデータを返します。これは異種であってはなりません。

于 2013-08-28T23:50:44.580 に答える