2017-10-28 9 views
0

座標作成し、しかし、私は次のような問題のためのスマートな解決策を見つけることができませんでした:私はリストのリストやリストの順列についてstackoverflowの上のいくつかの質問があります知っているユークリッドのためのすべての可能なベクターの組み合わせは、システム

私がしたいですユークリッドのためのすべての可能なベクターの塩基は座標系を作成します。

import numpy as np 
euclidean_system = np.array([[1,0,0], 
          [0,1,0], 
          [0,0,1]]) 

今、私は入力するitertoolsからの順列/製品機能のようなものをしたいと思います:

permutations = *desired_function*(euclidean_system) 
次いで

これはitertools.permutationsと容易に可能であるが、私は、例えば、さらに1、2または3ベクターが陰性である場合を含めたい今まで

permutations = [[[1,0,0],[0,1,0],[0,0,1]], 
       [[0,1,0],[1,0,0],[0,0,1]], 
       [[0,0,1],[0,1,0],[1,0,0]] # and so on 
       ] 

を得ます

additional_permutations = [[[1,0,0],[0,1,0],[0,0,1]], 
          [[-1,0,0],[0,1,0],[0,0,1]], 
          [[1,0,0],[0,-1,0],[0,0,-1]] # and so on 
          ] 

私はこれを手で入力することができますが、これに巧妙な解決策があるのだろうかと思います。 ありがとう!

+0

「np.meshgrid」を見ることができます。あなたが望むものを異なるフォーマットで出力します。 –

答えて

0

itertools.productを探している可能性があります。それは入力iterablesのデカルト座標のジェネレータを作成します。

from itertools import product 
list(product([-1,0,1],[-1,0,1],[-1,0,1])) 
# returns: 
[(-1, -1, -1), 
(-1, -1, 0), 
(-1, -1, 1), 
(-1, 0, -1), 
(-1, 0, 0), 
(-1, 0, 1), 
(-1, 1, -1), 
(-1, 1, 0), 
(-1, 1, 1), 
(0, -1, -1), 
(0, -1, 0), 
(0, -1, 1), 
(0, 0, -1), 
(0, 0, 0), 
(0, 0, 1), 
(0, 1, -1), 
(0, 1, 0), 
(0, 1, 1), 
(1, -1, -1), 
(1, -1, 0), 
(1, -1, 1), 
(1, 0, -1), 
(1, 0, 0), 
(1, 0, 1), 
(1, 1, -1), 
(1, 1, 0), 
(1, 1, 1)] 
+0

私はitertoolsの製品機能を既に知っていますが、これは私が必要とする出力ではありません。ユニットx/y/zベクトル(正と負の1s)のすべての異なる組み合わせ(順序)を持つ3x3のMATLICESを含むLISTの形式で出力する必要があります。 –

関連する問題