2017-03-10 7 views
0

私は3つの1D配列を持つシンプルなデータキューブ(行列)を作る方法を知りたいのですが、もっと簡単な方法があれば教えてください。キューブ[0,2,6]のように、最後に特定の値を呼び出すことができるようにしたい。Pythonで3D配列(データキューブ)を作成するにはどうすればよいですか?

x = arange(10) 
y = arange(10,20,1) 
z = arange(20,30,1) 

cube = meshgrid(x,y,z) 

しかし、これは複数の配列を与え、特定の番号を簡単に呼び出すことができないので、望ましい結果をもたらしません。私は、後で手で行うのが面倒な大規模なデータセットに対してこれを使用できるようにしたいと考えています。ありがとう

+0

私はむしろそれが少ない順 –

+0

のように見えるだろうに自分の番号を置くことができるようにしたいと思いますそれからちょうどそれを埋める... = np.arangeを(27 ).reshape(3,3,3)...または何でも、... a.fill(0) – NaN

答えて

1

meshgridは、直交メッシュを作成することを示しています。 3つの引数を指定して呼び出すと、3次元メッシュになります。メッシュは3次元の点の配置ですが、各点は3つの座標を持ちます。したがって、meshgridは、各座標に対して3つの配列を返します。

3次元配列を1つ取り出す標準的な方法は、3つの引数を持つベクトル化された関数を適用することです。ここでは簡単な例です:

>>> x = arange(7) 
>>> y = arange(0,30,10) 
>>> z = arange(0,200,100) 
>>> ym, zm, xm = meshgrid(y, z, x) 
>>> xm 
array([[[0, 1, 2, 3, 4, 5, 6], 
     [0, 1, 2, 3, 4, 5, 6], 
     [0, 1, 2, 3, 4, 5, 6]], 

     [[0, 1, 2, 3, 4, 5, 6], 
     [0, 1, 2, 3, 4, 5, 6], 
     [0, 1, 2, 3, 4, 5, 6]]]) 
>>> ym 
array([[[ 0, 0, 0, 0, 0, 0, 0], 
     [10, 10, 10, 10, 10, 10, 10], 
     [20, 20, 20, 20, 20, 20, 20]], 

     [[ 0, 0, 0, 0, 0, 0, 0], 
     [10, 10, 10, 10, 10, 10, 10], 
     [20, 20, 20, 20, 20, 20, 20]]]) 
>>> zm 
array([[[ 0, 0, 0, 0, 0, 0, 0], 
     [ 0, 0, 0, 0, 0, 0, 0], 
     [ 0, 0, 0, 0, 0, 0, 0]], 

     [[100, 100, 100, 100, 100, 100, 100], 
     [100, 100, 100, 100, 100, 100, 100], 
     [100, 100, 100, 100, 100, 100, 100]]]) 
>>> cube = xm + ym + zm 
>>> cube 
array([[[ 0, 1, 2, 3, 4, 5, 6], 
     [ 10, 11, 12, 13, 14, 15, 16], 
     [ 20, 21, 22, 23, 24, 25, 26]], 

     [[100, 101, 102, 103, 104, 105, 106], 
     [110, 111, 112, 113, 114, 115, 116], 
     [120, 121, 122, 123, 124, 125, 126]]]) 
>>> cube[0, 2, 6] 
26 
関連する問題