MATLAB .mat
経由のファイルscipy.io.loadmat
そして、numpy.void
オブジェクト。
誰かがそれらが何であるか、どのように使用できるか、どこでそれらを参照することができますかdocumentationを教えてもらえますか?
numpy
ドキュメントによると、 http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html 、numpy.void
タイプはflexibleデータ型。基本的に、これらはあなたが見ている変数に関連付けられた事前定義されたタイプがないデータタイプです。 numpy
を見ると、float
、uint8
、bool
、string
などのデータ型があります。
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
型です。