2

私には3つの制約があり、いつものように、それらのうちの2つを同時に満たす方法しかわかりません。

  1. 多次元配列
  2. 名前付き列
  3. 異なる列には異なるデータ型が含まれます(したがって、列1のすべてが文字列ですが、列2はすべて10進数などです)

現在、numpy ndarraysを使用して、各列にさまざまなタイプのデータを格納しています。複数のデータ型を格納できるように配列を初期化しました。

norm = numpy.empty((79, len(header)), dtype=numpy.object)

私は列名のプロキシとしてヘッダー(文字列名のリスト)を使用してきました(そしてヘッダーの値のインデックスを検索しました)が、これは本当に不器用なようです。

私は周りを見回しましたが、私が知る限り、列名(およびタイプ)で配列を初期化するときは、次のように、配列に値を入力する必要があります:NumPyの行と列のヘッダーを格納する

私がこのようなことをしようとすると:

n=numpy.empty((5,2), dtype=[("sub", "str"), ("words", Decimal)])
n[0] = ['06', Decimal(10)]

このエラーが発生します:

Traceback (most recent call last):
File "<string>", line 1, in <fragment>
ValueError: Setting void-array with object members using buffer.
4

1 に答える 1

2

これを試して:

>>> n = numpy.empty((5,2), dtype=[("sub", "S10"), ("words", Decimal)])
>>> n[0] = ('06', Decimal(10))
>>> print n
[[('06', Decimal('10')) ('06', Decimal('10'))]
 [('', None) ('', None)]
 [('', None) ('', None)]
 [('', None) ('', None)]
 [('', None) ('', None)]]

@sebergが述べたように、リストではなくタプルで設定したいと考えています。また、「sub」に格納する文字列の長さを指定する必要があります。Numpy 構造化配列は任意の長さの文字列を格納しないため、最大長を選択する必要があります。最大長を選択できない場合は、object代わりに を使用してstrください。

于 2012-11-15T23:02:33.747 に答える