2016-10-05 8 views
-1

複雑な3d numpy配列のすべてのエントリのデータを操作したいと思います。すべてのサブアレイのすべてのエントリをX-Y-Positionにしたい。私はMatlabがそのようなことを行うことができることを知っています(可変指標:すべてに対して)私はDARK [:] [1] [1]と以下に示しました。基本的には、すべてのサブ配列の2番目の列から2番目の項目を欲しいということです。これはPythonでこれを行う方法はありますか?Pythonは多次元numpy配列の1次元からすべてのエントリにアクセスします

[array([[ 0, 0],[ 0, 0]]), 
array([[ 1, 2],[ 3, 4]]), 
array([[ 2, 4],[ 6, 8]])] 

Second row, second column: [0, 4, 8] 
+0

入力配列を作成するには、 'import numpy as np、d = np.arange(12).reshape(2,2,3)'のようなものを使用しますか?予想される出力を表示しますか? – Divakar

+0

これは、上記と同じ変数を生成しません。[[[0 1 2] [3 4 5]] [[6 7 8] [9 10 11]]]問題は、私がここで詳しく説明したくないフィットファイルから、私の変数のより複雑なソースを扱うことです。私の使用するファイルと同じタイプの変数を生成する点です。 –

+0

これは、多次元numpy配列を作成する別の方法は分かりませんが、これはサンプルndarrayを作成するための提案でした。 – Divakar

答えて

1

は、解決策を見つけたおかげDivakareeScott

import numpy as np 

# Creating a dummy variable of the type I deal with (If this looks crappy sorry, the variable actually comes from the output of d = pyfits.getdata()): 
a = [] 
for i in range(3): 
    d = np.array([[i, 2*i], [3*i, 4*i]]) 
    a.append(d) 

# print variable 
print np.array(a) 
print 'Second row, second column: ', np.array(a)[:, 1, 1] 

# Alternative solution: 
a = np.asarray(a) 
print a 
print 'Second row, second column: ', a[:,1,1] 

結果:

[[[0 0][0 0]] 
[[1 2][3 4]] 
[[2 4][6 8]]] 
Second row, second column: [0 4 8] 
1

あなたがわずかに異なる構文を使用してこれを行うことができます。

import numpy 

# Creating a dummy variable of the type I deal with (If this looks crappy sorry, the variable actually comes from the output of d = pyfits.getdata()): 
a = [] 
for i in range(3): 
    d = numpy.array([[i, 2*i], [3*i, 4*i]]) 
    a.append(d) 

print a 
# Pseudo code: 
print 'Second row, second column: ', a[:][1][1] 

は、私はこのような結果は期待しています。

import numpy as np 

a = np.arange(27).reshape(3,3,3) # Create a 3x3x3 3d array 

print("3d Array:") 
print(a) 
print("Second Row, Second Column: ", a[:,1,1]) 

出力:

>>> 3d Array: 
[[[ 0 1 2] 
    [ 3 4 5] 
    [ 6 7 8]] 

    [[ 9 10 11] 
    [12 13 14] 
    [15 16 17]] 

    [[18 19 20] 
    [21 22 23] 
    [24 25 26]]] 

>>> Second Row, Second Column: [ 4 13 22] 
+0

それは同じ種類の変数を生成しません私の実際のコードです:d = pyfits.getdata(fitsimage)私は変数を作成する方法を変更することはできませんが、おそらく私はできることに現在のものを変更する方法があります形を変える? –

+0

あなたはそれを再形成する必要はありません、私はちょうどその行のコードで3d配列の例を作成しています。 'print' 2行目、2番目の列: '、a [:、1,1]」 – eeScott

+0

実際にコードでは、numpy配列のリストからnumpy配列のnumpy配列に変更する必要があります。 'a = np.asarray(a)'とすることができます。それで 'print a [:、1,1]'が動作します。 – eeScott

関連する問題