1

loadtxtテキストファイルから配列にデータをロードするために、Pythonでnumpyの機能を使用しています。問題を引き起こさない標準的なもの。

ubuntu 10.04でこれを行うスクリプトを作成しましたが、問題なく動作しました。ただし、最近ubuntu 12.04にアップグレードしました(完全な再インストールであり、アップグレードではありません)が、スクリプトが機能しなくなりました。

ファイルの 1 行を次に示します。すべての行は同じ構造です: タブで区切られた 11 列:

Av = 0° Bv = 78°    273013  247744  1327      ****  Av' = 156°  Bv = 78°    259197  247803  1551

5 列目と 11 列目のデータが必要なので、次のコマンドを使用してデータを読み込みます: loadtxt(file, usecols=(4,10),delimiter='\t')

しかし、それは機能しません。ここで ipython が吐き出すもの:

In [46]: test=loadtxt(file,usecols=(4,10),delimiter='\t')
--------------------------------------------------------------------------- ValueError   
Traceback (most recent call last)  <ipython-input-46-20a0923eaf9b> in <module>()
----> 1 test=loadtxt(file,usecols=(4,10),delimiter='\t')

/usr/lib/python2.7/dist-packages/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
    794                 vals = [vals[i] for i in usecols]
    795             # Convert each value according to its column and store

--> 796             items = [conv(val) for (conv, val) in zip(converters, vals)]
    797             # Then pack it according to the dtype's nesting

    798             items = pack_items(items, packing)

ValueError: could not convert string to float:

以前は古いシステム(ubuntu 10.04)で動作していましたが、新しいインストール(ubuntu 12.04)でこのファイルからデータをロードできません。

誰かが私に何が悪いのか指摘できれば、それは大歓迎です!

4

1 に答える 1

1

なぜloadtxt以前は機能していたのかはわかりませんが、現在は文字列をうまく処理できません。genfromtxtただし、このレコードを処理するために使用できます。

import numpy as np

out = np.genfromtxt(file, usecols=(4,10), delimiter='\t')

を省略してusecolsレコード全体をロードすると、文字列エントリがnans に置き換えられます。

于 2012-06-01T12:32:35.023 に答える