2017-02-26 5 views
1

Pythonのバージョン:私は、すべての組み合わせを見つけたい場合は関数meshgrid N-円柱numpyの中のマトリックス(または他のなめらか)

array([[ -5.05000000e+01, -1.05000000e+01], 
    [ -4.04000000e+01, -8.40000000e+00], 
    [ -3.03000000e+01, -6.30000000e+00], 
    [ -2.02000000e+01, -4.20000000e+00], 
    [ -1.01000000e+01, -2.10000000e+00], 
    [ 7.10542736e-15, -1.77635684e-15], 
    [ 1.01000000e+01, 2.10000000e+00], 
    [ 2.02000000e+01, 4.20000000e+00], 
    [ 3.03000000e+01, 6.30000000e+00], 
    [ 4.04000000e+01, 8.40000000e+00]]) 

:2.7

私は、次のnumpy 2D配列を持っています最初の列と2番目の列は、私はnp.array(np.meshgrid(first_column, second_column)).T.reshape(-1,2)を使用します。その結果、100*1 matrix10*10 = 100 data pointsと表示されます。しかし、私の行列は3、4、またはそれ以上の列を持つことができるので、このnumpy関数を使用する問題があります。

質問:どのようにして3列以上のマトリックスを自動的にグリッド化できますか?

UPD:例えば、私は最初の配列があります。

array([[-10.5, -50.5], 
    [-10.5, 0. ], 
    [ 0. , -50.5], 
    [ 0. , 0. ]]) 

またはこの:

結果

[[-50.5 -10.5] 
[ 0. 0. ]] 

を、私はこのような出力配列を持つようにしたいです

array([[-50.5, -10.5], 
    [-50.5, 0. ], 
    [ 0. , -10.5], 
    [ 0. , 0. ]]) 
+0

'3、4、またはそれ以上dimensional'することにより、あなたは' 3、4、またはそれ以上を持つ意味ですかむしろ列数? 3次元データのサンプルを追加できますか?また、 'np.meshgrid(first_column、second_column)'は100個の要素を持つ2つの配列のリストを返します。だから、あなたはどのように '100 * 1マトリックス 'を持っていますか? – Divakar

+0

@Divakar、はい、あなたは正しいです。私は私の説明を更新します。 – Alex

答えて

1

転置配列で* operatorを使用できますそれらの列を順次解凍するバージョンです。最後に、出力グリッド配列を1つの配列としてマージするには、スワップ軸操作が必要です。

したがって、1つの汎用ソリューションは次のようになります -

np.swapaxes(np.meshgrid(*arr.T),0,2) 

サンプル実行 -

In [44]: arr 
Out[44]: 
array([[-50.5, -10.5], 
     [ 0. , 0. ]]) 

In [45]: np.swapaxes(np.meshgrid(*arr.T),0,2) 
Out[45]: 
array([[[-50.5, -10.5], 
     [-50.5, 0. ]], 

     [[ 0. , -10.5], 
     [ 0. , 0. ]]]) 
+0

私はうまく動作しないのではないかと心配しています。 [: 'X_total = np.meshgrid(* X_total.T)'私はなるだろう入力した後 [[-50.5 -10.5] [0 0]] :私はこのような2x2の行列を使用している場合配列([[ - 50.5、0. 0]、 [-50.5、0]])、配列([[-10.5、-10.5]、 [0.、0.]])] 代わりに私は欲しい: アレイ([ - 10.5、-50.5]、 [-10.5、0]、 [0、-50.5]、 [0、0]]) – Alex

+0

編集内容をチェック@Alex。 – Divakar

関連する問題