2017-07-14 11 views
2

numpy manual は彼女の統計データを表すために大きなネストされたレコード・アレイを使用していnumpy.save入れ子になったnumpyレコード配列を作成するには?

アニーアナリストのための使用事例に言及しています。

dtype = objectなしでネストされたレコード配列を持つことは可能ですか?もしそうなら、どうですか?

+0

を使用しますか?https://stackoverflow.com/questions/19201868/how-to-set-dtype-for-nested-numpy-ndarray質問する質問する – Eric

答えて

-1

あなたはネストされた配列にあなたがネストされたリストを構築するのと同じ方法構築することができます:はい、そうのよう

nested_list = [['a',1],['b',2],['c',3]] 

import numpy as np 
nested_array = np.array(nested_list) 
2

を:

engine_dt = np.dtype([('volume', float), ('cylinders', int)]) 
car_dt = np.dtype([('color', int, 3), ('engine', engine_dt)]) # nest the dtypes 

cars = np.rec.array([ 
    ([255, 0, 0], (1.5, 8)), 
    ([255, 0, 255], (5, 24)), 
], dtype=car_dt) 

print(cars.engine.cylinders) 
# array([ 8, 24]) 

np.dtype機能がここに厳密には必要ではないが、それは普通です良いアイデアを与え、毎回arrayと呼ぶよりも少しスピードを上げます。

ここでrec.arrayは、.engineの表記を使用する場合にのみ必要です。 np.arrayのプレーンを使用した場合は、cars['engine']['cylinders']

+0

「車」のデータは、あなた(適切な[]と()の組み合わせ)として適切に入れ子にされていなければなりません。それはエラーの原因となる可能性があります。しかし、 'csv'' genfromtxt'からの読み込み時に十分なデータがある限り、列のフラットリストを使用することができます。 – hpaulj

+0

ちょうどチェックされています: 'genfromtxt'はまず' dtype'のフラット化されたバージョンを持つ配列を作成し、ネストされたdtypeを持つビューを返します。 – hpaulj

+0

異なる長さのリストでこれを行うことはできますか?例えば。未知のサイズと型intの2次元配列である '' car_dt''にフィールド '' photo''を追加したいのであれば、どうでしょうか? – lumbric

関連する問題