2016-12-02 17 views
0

イテレータを使用してリストからタプルに行くときにthis questionが見つかりましたが、大きなデータセットを扱っています。2d numpy配列をタプルの1d numpy配列に効率的に変換する方法はありますか?

私は実際に私がそこに配列にタプルのリストから行くの質問の束だが、私は他の方向に行く方法を発見していない...

、リストにタプルから行くためthis questionを見つけました私は必ずしもタプルのnumpyの配列を必要としませんが、私はeffcientlyそれをやりたい

np.arrray([( 0 1) 
      ( 1 1) 
      ( 2 1) 
      ..., 
      (1004 3) 
      (1005 1) 
      (1006 1)]) 

:いる:

np.arrray([[ 0 1] 
      [ 1 1] 
      [ 2 1] 
      ..., 
      [1004 3] 
      [1005 1] 
      [1006 1]]) 

私が欲しいです。

+0

を*私は必ずしもタプルのnumpyの配列を必要としませんが、私はeffciently *それをしたい - あなたは試してみました。おかげで直接スライスして、わずかに速くおそらく

を@Divakarします定期的なリストの理解? – RomanPerekhrest

+0

@RomanPerekhrestは素早い返信をありがとう。リストの理解は[この質問](http://stackoverflow.com/a/23286299/2876684)の回答と同じではありませんか? – mattyd2

+1

2-d numpy配列で直接行うことができないタプルの1-d numpy配列(または他のシーケンス)で何ができますか? – jez

答えて

4

は、効率的にこれはかなり速いリスト内包

よりなりタプル

zip(at[0],at[1]) 

のリストに2つの1Dのリストを変換するために、その後zipを転置

a = np.array([[ 0 , 1], 
       [ 1 , 1], 
       [ 2 , 1], 
       [ 0 , 1], 
       [ 1 , 1], 
       [ 2 , 1] ]) 

at = a.T 

at= array([[0, 1, 2, 0, 1, 2], 
      [1, 1, 1, 1, 1, 1]]) 

を取り、この変換をベクトル化するには

しかし、Python 3.4

list(zip(at[0],at[1]) 

Out []: 
[(0, 1), (1, 1), (2, 1), (0, 1), (1, 1), (2, 1)] 

EDIT:zip(a[:,0], a[:,1])

+1

私のシステムでは3倍の速さです。非常にクールな外部ソリューションです! – jez

+0

'zip(a [:、0]、a [:、1])'を直接スライスすることで、少し速くなる可能性があります。 – Divakar

+0

@SerialDev魅力のように動作します!ありがとうございました! – mattyd2

関連する問題