2010-04-29 78 views
2

我有一個numpy的陣列numpy的人氣指數表示的函數的多個x間隔:具有多個間隔

In [137]: x_foo 
Out[137]: 
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944, 
     945, 946, 947, 948, 949, 950]) 

,你可以看到,在x_foo兩個間隔:一個從211到218,和一個從940到950.這些是間隔,我想插入scipy。對於這一點,我需要調整間距,e.g「211.0 211.1 211.2 ...」你會normaly與做:

arange(x_foo[0], x_foo[-1], 0.1) 

在多個間隔的情況下,這是不可能的。所以繼承人我的問題:是否有一種數組式的做法呢?或者我是否需要編寫一個函數,該函數遍歷整個數組並在差異大於1時進行拆分?

謝謝!

回答

3
import numpy as np 
x = np.array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944, 
    945, 946, 947, 948, 949, 950]) 
ind = np.where((x[1:] - x[:-1]) > 1)[0] 

會給你在X元素等於218。然後,你希望兩個範圍的指標是:

np.arange(x[0],x[ind],0.1) 

np.arange(x[ind+1],x[-1],0.1) 
+0

感謝您的回答,但多數民衆贊成在什麼即時通訊尋找。我認爲可能有解決方法。我現在使用的是平等的方法。不管怎麼說,還是要謝謝你! – 2010-04-29 16:18:59

+0

然後我想我不明白你在找什麼樣的答案。你能詳細解釋一下你在找什麼樣的答案嗎? – 2010-04-29 16:54:32

0
np.r_[ 211:218+1, 940:950+1 ] 
array([211, 212, 213, 214, 215, 216, 217, 218, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950]) 

r_[]從標量,範圍,數組,列表,元組等等中排除一行; 我猜r_row的簡稱。 有關doc,請參閱Ipython中的np.r_?
(Python在方括號內處理211:218而不是圓,因此r_[]不是())。