web-dev-qa-db-ja.com

numpy.voidタイプ-使用方法

MATLAB .mat経由のファイルscipy.io.loadmatそして、numpy.voidオブジェクト。

誰かがそれらが何であるか、どのように使用できるか、どこでそれらを参照することができますかdocumentationを教えてもらえますか?

34
Felix

numpyドキュメントによると、 http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.htmlnumpy.voidタイプはflexibleデータ型。基本的に、これらはあなたが見ている変数に関連付けられた事前定義されたタイプがないデータタイプです。 numpyを見ると、floatuint8boolstringなどのデータ型があります。

voidは、より汎用的で柔軟な型に対応するためのものであり、これらの事前定義されたデータ型のいずれにも当てはまらないデータ型用です。この状況は、各要素が複数のフィールドに関連付けられた複数のデータ型を持つstructでロードしているときにほとんど発生します。各構造要素は異なるデータ型の組み合わせを持つことができ、この構造要素のインスタンスを表すためにこれらすべてのデータ型の融合は、したがってnumpy.voidにつながります。

ドキュメントを使用すると、他のデータ型と同じ操作を確実に実行できます。次のgenericデータ型メソッドをご覧ください。 http://docs.scipy.org/doc/numpy/reference/generated/numpy.generic.html#numpy.generic 。実際、numpy.voidを含むすべてのnumpyデータ型は、この汎用クラスから派生しています。

この投稿の冒頭で提供した最初のリンクでは、カスタムレコードタイプを作成する方法の良い例を示しています。ここで、レコードは数字のタプルと文字列の組み合わせです。これらのレコードのリストを作成するとき、リスト内の各タイプはnumpy.voidタイプであり、レコードがこのデータタイプであることを示しています。ただし、このレコードリストのデータタイプはこのレコードですが、このリストの各要素タイプはnumpy.voidになります。


ただし、自己完結型の問題として、ここで例を再作成しましょう。作成する変数ごとに2つのフィールドが関連付けられているカスタムレコードタイプを作成します。

  • nameという名前のフィールドを持つ16ビット文字列
  • gradesという名前のフィールドを持つ、それぞれ64ビットの浮動小数点数の2要素タプル

そのため、次のようなことをします。

import numpy as np
dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])

そのため、2つの要素のサンプルリストを作成し、それらのフィールドをインスタンス化します。

x = np.array([('Sarah', (8.0, 7.0)), ('John', (6.0, 7.0))], dtype=dt)

このリストをnumpy.arrayにしたため、そのデータ型は次のようになります。

type(x)

我々が得る:

<type 'numpy.ndarray'>

リスト自体はnumpy.arrayですが、not個々の要素であることを忘れないでください。


このリストの2番目の要素(2番目のレコード)にアクセスするには、次のようにします。

x[1]

我々が得る:

('John', [6.0, 7.0])

2番目のレコードのタイプを確認するには、次のようにします。

type(x[1])

我々が得る:

<type 'numpy.void'> # As expected

あなたのためのいくつかの追加ボーナス

2番目のレコードの名前にアクセスするには、次のようにします。

x[1]['name']

我々が得る:

'John'

2番目のレコードの成績にアクセスするには、次のようにします。

x[1]['grades']

我々が得る:

array([ 6.,  7.])

2番目のレコード内の名前のタイプを確認するには、次のようにします。

type(x[1]['name'])

我々が得る:

<type 'numpy.string_'>

2番目のレコード内のグレードのタイプを確認するには、次のようにします。

type(x[1]['grades'])

我々が得る:

<type 'numpy.ndarray'>

このリストの各要素はnumpy.void型であることに注意してください。ただし、リスト内の各要素の個々のフィールドは、数字のタプルまたは文字列です。これらの要素を合わせたcollectionは_numpy.void型です。

57
rayryeng