2017-12-14 11 views
0

配列がnumpyで、インデックス番号に基づいていくつかの値を選択します。私は、例えばPython3.6配列から特定の範囲のインデックスを選択したい

を使用しています:

np.array: 
index# 
[0] 
[1] + + + + + + + + + +   + + + + + + + + + + 
[2] + I want to selct +   + I don't want to select: 
[3] + the indexs:  +   +     [0] 
[4] +  [2]  +   +     [10] 
[5] +  [4]  +   +  Or any between 
[6] +  [6]  +   + 
[7] +  [8]  +   + + + + + + + + + + 
[8] + + + + + + + + + + 
[9] 
[10] 

私はインデックス番号を選択する上で、あなたが例えば見ることができるように:

if x = 2, 4, 8 

これが動作する場合、私はちょうどxの番号を指定するが、私は、たとえばしようとしたx変数を作りたい場合:

if x: 
for i in np.arange(x+2, x-last_index_number, x+2): 
return whatever 

x + 2 =最初のインデックス(開始点)。 x-last_index_number =私が望む最後のインデックス(最後のポイント)。 x + 2 =手順(xに2を加えて次のインデックス番号に移動したいなど)

私の質問では、オーダー:あなたが欲しいの正確な値にスライスできるように

[5][10][15][20][25][30][35] 
or 
[4][8][12][16][20] 
+0

参照[この](https://stackoverflow.com/questions/509211/understanding-pythons-slice-表記法) –

答えて

1

numpyのスライスが入力に配列へのインデックスのリストをことができますたとえば

:。

import numpy as np 
    a = np.random.randn(10) 
    a[[2,4,6,8]] 

これは2番目、4番目、6番目、8番目の配列要素を返します(pythonインデックスは0から始まることに注意してください)。あなたは、インデックスxから始まるすべての2番目の要素をしたいのであれば、あなたは、単にそれらの要素でリストを作成すると、あなたが望む要素を取得するために、配列にそのリストを送り、例えばすることができます

idx = list(range(2,10,2)) 
    a[idx] 

この再び戻ります所望の要素(指標2,4,6,8)。

0

あなたxは長さのアレイ20

x = np.arange(0,20) 

戻り

によって

x [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] 

アクセス毎n番目(ここでは偶数インデックス)配列xの最初の2つの及び最後の2つのインデックスを無視する要素であります

print(x[2:len(x)-1:2]) 

返信

[2 4 6 8] 

と同様の方法で残りのため、

print(x[5:len(x)-1:5]) 
print(x[4:len(x)-1:4]) 

戻り

[ 5 10 15] 
[ 4 8 12 16] 
関連する問題