2017-08-29 21 views
1

多次元配列(2400,2)を含むデータセットがあります。Numpyは、多次元配列の多次元配列を変更します。

これらの2400行のそれぞれを取り、開始点と終了点(2400行のそれぞれの2つの要素)の範囲に変更したいと考えています。範囲は常に同じ長さです(私の場合、長さは60です)。私はこれを行うことができた唯一の方法は、のためにある

array([[ 78, 79, 80, 81, 82], 
     [ 90, 91, 92, 93, 94], 
     [ 102, 103, 104, 105, 106]]) 

array([[ 78, 82], 
     [ 90, 94], 
     [ 102, 106]]) 

私の出力はこのようなものでなければなりません:私はこのような何かを持っている場合たとえば

、ループが、私はデータセットが非常に大きくなることができるように各行をループすることを避けようとしています。

ありがとうございます!第二カラムと最初の列の間の差が常に4であれば、あなたが最初の列を抽出し、それに[0,1,2,3,4]の配列を追加することができます

答えて

0

ので、必然的にarangesのすべてを行う必要があり同じ長さであれば、最初のエントリに沿って範囲を作成し、それを他のエントリに対して複製することができます。例えば

x = np.array([[78, 82], 
       [90, 94], 
       [102, 106]]) 

>>> x[:, :1] + np.arange(0, 1 + x[0, 1] - x[0, 0]) 
# array([[ 78, 79, 80, 81], 
#  [ 90, 91, 92, 93], 
#  [102, 103, 104, 105]]) 
0

arr = np.array([[ 78, 82], 
       [ 90, 94], 
       [ 102, 106]]) 

arr[:,:1] + np.arange(5) 
Out[331]: 
array([[ 78, 79, 80, 81, 82], 
     [ 90, 91, 92, 93, 94], 
     [102, 103, 104, 105, 106]])