9

実際に文字列のリストを表す 2D numpy char 配列 (NetCDF4 ファイルから) があります。文字列のリストに変換したい。

join() を使用して文字を文字列に連結できることはわかっていますが、一度に 1 つの文字列を実行する方法しか見つかりません。

data = np.array([['a','b'],['c','d']])
for row in data[:]:
    print ''.join(row)

しかし、それは非常に遅いです。単一のコマンドで文字列の配列を返すにはどうすればよいですか? ありがとう

4

3 に答える 3

13

リスト内包表記は、最も「pythonic」な方法です。

最も「numpythonic」な方法は次のとおりです。

>>> data = np.array([['a','b'],['c','d']])
# a 2D view
>>> data.view('S2')
array([['ab'],
       ['cd']], 
      dtype='|S2')
# or maybe a 1D view ...fastest solution:
>>> data.view('S2').ravel()
array(['ab', 'cd'], 
      dtype='|S2')

ループも、リストの理解も、コピーもありません。バッファは別の「ビュー」で変更されずにそこにあるだけなので、これが利用可能な最速のソリューションです。

于 2012-06-11T17:37:24.057 に答える
3

リスト内包表記を試してください:

>> s = [''.join(row) for row in data]
>> s
['ab', 'cd']

これはforループを書き直しただけです。

于 2012-06-11T17:10:11.830 に答える
2
[row.tostring() for row in data]
于 2012-06-11T19:00:09.073 に答える