5

誰かが私がここで間違っていることを示すことができますか?

import numpy as np

a = np.array([1,2,3,4,5],dtype=int)
b = np.array(['a','b','c','d','e'],dtype='|S1')

np.savetxt('test.txt',zip(a,b),fmt="%i %s")

出力は次のとおりです。

Traceback (most recent call last):
  File "loadtxt.py", line 6, in <module>
    np.savetxt('test.txt',zip(a,b),fmt="%i %s")
  File "/Users/tom/Library/Python/2.6/site-packages/numpy/lib/io.py", line 785, in savetxt
    fh.write(format % tuple(row) + '\n')
TypeError: %d format: a number is required, not numpy.string_
4

3 に答える 3

12

配列を別の方法で構築する必要があります。

z = np.array(zip([1,2,3,4,5], ['a','b','c','d','e']), dtype=[('int', int), ('str', '|S1')])
np.savetxt('test.txt', z, fmt='%i %s')

シーケンスを渡している場合、呼び出しsavetextを実行し、結果の配列の型は です。つまり、すべての要素が文字列です! そのため、このエラーが表示されます。asarray(sequence)|S4

于 2009-10-09T17:31:52.657 に答える
4

CSV ファイルを保存する場合は、関数 rec2csv (matplotlib.mlab に含まれています) も使用できます。

>>> from matplotlib.mlab import rec2csv
>>> rec = array([(1.0, 2), (3.0, 4)], dtype=[('x', float), ('y', int)])
>>> rec = array(zip([1,2,3,4,5], ['a','b','c','d','e']), dtype=[('x', int), ('y', str)])
>>> rec2csv(rec, 'recordfile.txt', delimiter=' ')

いつか pylab の開発者が csv ファイルの書き込みを適切にサポートするようになることを願っています。

于 2009-10-09T17:53:36.280 に答える
1

あなたが抱えている問題は、フォーマット文字列を介してタプルを渡していることであり、タプルを %i で解釈できないことだと思います。これが出力として探しているものであると仮定して、fmt="%s" を使用してみてください。

1 a
2 b
3 c
4 d
5 e
于 2009-10-09T17:20:33.230 に答える