フォームのリストがあります:
['a b 1 2', 'c d 3 4']
私は最終的に4つの垂直のnumpy配列になってしまうことを試みています。例、['a','c']
および[1,2]
さまざまな分割関数や配列分割などを使用すると、少し混乱します。
スーパーヌーブの質問であり、これはこれを可能な限り効率的に行うための演習です。
どんな助けでも大歓迎です!
numpy には、Python の文字列リスト内の文字列を個別の配列に直接分割する機能はありません。これらの文字列が、一貫した列のデータ型を持つテキスト ファイルで読み取られたものである場合は、次の使用を検討してnumpy.genfromtxt
ください。
http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
編集するか、彼の応答でjterracenp.genfromtxt
ノートとして読み取ることができる形式に配列を強制することができます。
レコード配列として読み取ることができます。
>>> A = ['a b 1 2', 'c d 3 4']
>>> from StringIO import StringIO
>>> import numpy
>>> s = StringIO('\n'.join(A))
>>> data = numpy.genfromtxt(s, dtype=[('letter1', 'S1'), ('letter2', 'S1'), ('num1', 'f8'), ('num2', 'f8')])
次に、列にアクセスします。
>>> data['letter1']
array(['a', 'c'],
dtype='|S1')
>>> data['num1']
array([ 1., 3.])
これは固定サイズの文字列に限定されることに注意してください。これがデータの問題かどうかはわかりません。
A = ['a b 1 2', 'c d 3 4']
filter(lambda x:x[0].strip() or x[1].strip(),zip (*A))
#[('a', 'c'), ('b', 'd'), ('1', '3'), ('2', '4')]
派手な配列ではありませんが
[編集] 私がやったかどうかわからない目標を理解したと仮定して...