1

フォームのリストがあります:

['a b 1 2', 'c d 3 4']

私は最終的に4つの垂直のnumpy配列になってしまうことを試みています。例、['a','c']および[1,2]

さまざまな分割関数や配列分割などを使用すると、少し混乱します。

スーパーヌーブの質問であり、これはこれを可能な限り効率的に行うための演習です。

どんな助けでも大歓迎です!

4

3 に答える 3

1

numpy には、Python の文字列リスト内の文字列を個別の配列に直接分割する機能はありません。これらの文字列が、一貫した列のデータ型を持つテキスト ファイルで読み取られたものである場合は、次の使用を検討してnumpy.genfromtxtください。

http://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html

編集するか、彼の応答でjterracenp.genfromtxtノートとして読み取ることができる形式に配列を強制することができます。

于 2012-08-17T18:48:35.523 に答える
1

レコード配列として読み取ることができます。

>>> 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.])

これは固定サイズの文字列に限定されることに注意してください。これがデータの問題かどうかはわかりません。

于 2012-08-17T19:14:38.310 に答える
0
  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')]

派手な配列ではありませんが

[編集] 私がやったかどうかわからない目標を理解したと仮定して...

于 2012-08-17T18:04:05.393 に答える