9

numpyに3Dレコード配列を含めることは可能ですか?(多分これは不可能であるか、または単に物事を行うためのより簡単な方法があります-私は他のオプションを受け入れています)。

3つの変数(たとえば、温度、降水量、湿度)のデータを保持する配列が必要であり、各変数のデータが実際には2年(行)と6か月のデータ(列)の2次元配列であると仮定すると、次のように作成できます。このような:

>>> import numpy as np

>>> d = np.array(np.arange(3*2*6).reshape(3,2,6))
>>> d

#
# comments added for explanation...
#        jan   feb   mar   apr   may   Jun    

array([[[ 0,    1,    2,    3,    4,    5],   # yr1  temp
        [ 6,    7,    8,    9,   10,   11]],  # yr2  temp

       [[12,   13,   14,   15,   16,   17],   # yr1  precip
        [18,   19,   20,   21,   22,   23]],  # yr2  precip

       [[24,   25,   26,   27,   28,   29],   # yr1  humidity
        [30,   31,   32,   33,   34,   35]]]) # yr2  humidity

次のように入力できるようにしたいと思います。

>>> d['temp']

これ(データの最初の「ページ」)を取得します。

>>> array([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11]])

また:

>>> d['Jan']   # assume months are Jan-June

そしてこれを手に入れよう

>>> array([[0,6],
          [12,18],
          [24,30]])

私はこれを何度も経験しました:http ://www.scipy.org/RecordArraysですが、私が何を求めているのかわかりません。

4

1 に答える 1

12

実際には、構造化された配列でこれと同様のことを行うことができますが、一般的には価値があるよりも面倒です。

あなたが望むのは、基本的にラベル付けされた軸です。

Pandas (numpy の上に構築されている) は、必要なものを提供し、このタイプのインデックス作成が必要な場合に適しています。Larry (ラベル付き配列用)もありますが、ほとんどが Pandas に取って代わられています。

また、これに関する情報については、FAQ ではなく、構造化配列の numpy ドキュメントを参照する必要があります。numpy のドキュメントには、かなり多くの情報があります。http://docs.scipy.org/doc/numpy/user/basics.rec.html

純粋な numpy ルートを使用する場合は、構造化配列に多次元配列を含めることができることに注意してください。(dtype を指定するときの shape 引数に注意してください。) ただし、これは価値がある以上に急速に複雑になります。

用語ではpandas、必要なのはPanel. ただし、最初にsに慣れてDataFrameおく必要があります。

パンダでそれを行う方法は次のとおりです。

import numpy as np
import pandas

d = np.array(np.arange(3*2*6).reshape(3,2,6))

dat = pandas.Panel(d, items=['temp', 'precip', 'humidity'], 
                      major_axis=['yr1', 'yr2'], 
                      minor_axis=['jan', 'feb', 'mar', 'apr', 'may', 'jun'])

print dat['temp']
print dat.major_xs('yr1')
print dat.minor_xs('may')
于 2012-06-27T21:26:44.337 に答える