2016-07-20 4 views
1

У меня есть массив с разными номерами, называемый wave_data. Он имеет 101 номер от 0,30000001 до 0,60000002.Выбор диапазона из массива

Это код, у меня есть:

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] 

Цель состоит в том, чтобы иметь эти два числа, минимальные и максимальные переменных, то диапазон для выбора чисел из массива. Тем не менее, я застрял в этой точке и не знаю, как это сделать.

ответ

4

Select by boolean mask, не нарезая:

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

Совет: не называйте переменные range, min или max, так как это тени Python встроенных команд с тем же именем.

+0

этот наконечник очень важен! – pwnsauce

+0

Спасибо! Это работает – Ben

1

Это можно сделать с помощью простого понимания списка.

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

Это также работает, спасибо – Ben

Смежные вопросы