2016-07-20 22 views
1

Ich habe ein Array mit unterschiedlichen Nummern namens wave_data. Es hat 101 Zahlen von 0.30000001 bis 0.60000002.Nehmen Sie einen Bereich aus einem Array

Dies ist der Code, den ich habe:

center_wave = 450e-9 
width = 50e-9 
wavelengths = wave_data*1e-6 

range = width/2 
min = center_wave - range 
max = center_wave + range 

wavelengths = wavelengths[somevariable:somevariable] 

Das Ziel ist es, die diese beiden Zahlen zu haben, die Min- und Max-Variablen ist die Angabe für die Zahlen aus dem Array auswählen. Allerdings stecke ich an diesem Punkt fest und weiß nicht, wie ich das machen soll.

Antwort

4

Select by boolean mask, nicht durch Schneiden:

waverange = width/2 
wavemin = center_wave - waverange 
wavemax = center_wave + waverange 
mask = (wavelengths > wavemin) & (wavelengths <= wavemax) 
wavelengths = wavelengths[mask] 

Tipp: Sie nennen keine Variablen range, min oder max da diese Python builtins des gleichen Namens Schatten.

+0

dieser Tipp ist ein bisschen wichtig! – pwnsauce

+0

Danke! Es funktioniert – Ben

1

Es könnte mit einem einfachen Listenverständnis getan werden.

center_wave = 450e-9 
width = 50e-9 
wavelengths = wave_data*1e-6 

wave_range = width/2 
wave_min = center_wave - wave_range 
wave_max = center_wave + wave_range 

wavelengths = [x for x in wavelengths if x >= wave_min and x <= wave_max] 
+0

Das funktioniert auch, danke – Ben

Verwandte Themen