2016-08-11 16 views
0

を私はは(x、y)のリストにX、Y numpyの行列を変換

x=np.array([[1,2,3],[3,4,5],[5,7,8]]) 
y=np.array([[5,2,5],[1,1,1],[2,2,2]]) 

をしているポイント私は最高の(迅速かつクリーンな)方法は何

xy=[(1,5),(2,2),(3,5),(3,1),(4,1),(5,1),(5,2),(7,2),(8,2)] 

を取得したいのですがそうするために?また、xyを取得したら、xyのインデックスを元のnumpyマトリックスx,yにどのように関連付けるのですか?

答えて

2

あなたはxyを得るために、このアプローチを使用することができます。

zip(x.flatten(),y.flatten()) 

#[(1, 5), (2, 2), (3, 5), (3, 1), (4, 1), (5, 1), (5, 2), (7, 2), (8, 2)] 
0

トランスポーズやnop.dstack()を使用します。

>>> np.dstack((x.ravel(), y.ravel()))[0] 
array([[1, 5], 
     [2, 2], 
     [3, 5], 
     [3, 1], 
     [4, 1], 
     [5, 1], 
     [5, 2], 
     [7, 2], 
     [8, 2]]) 
>>> 
>>> 
>>> np.array((x.ravel(), y.ravel())).T 
array([[1, 5], 
     [2, 2], 
     [3, 5], 
     [3, 1], 
     [4, 1], 
     [5, 1], 
     [5, 2], 
     [7, 2], 
     [8, 2]]) 
+0

マイナーチェンジが '後に再構築することですdstack': 'np.dstack((x、y))。reshape(-1,2)'です。 – hpaulj

+0

@hpauljええ、これは良い選択肢かもしれません! – Kasramvd

1

あなたが試すことができます。

>>> x = [[1,2,3],[3,4,5],[5,7,8]] 
>>> y = [[5,2,5],[1,1,1],[2,2,2]] 
>>> x1 = [val for x_data in x for val in x_data] 
>>> y1 = [val for y_data in y for val in y_data] 
>>> final = [(a,b) for a, b in zip(x1, y1)] 
>>> print final 
[(1, 5), (2, 2), (3, 5), (3, 1), (4, 1), (5, 1), (5, 2), (7, 2), (8, 2)] 
関連する問題