2013-08-21 5 views
0

Ищет способ сохранить этот код в 2D-массиве в python. Я попытался сделать 1D-массив, а затем превратил его в 2D-массив, но мой код по-прежнему громоздкий и не работает. Разрыв между 4 и 6 не является опечаткой. Любая помощь будет принята с благодарностью.Создание 2D-массива python для хранения данных

recno1inds11 = nonzero(data11[:,1]==no1)[0] 
recno2inds11 = nonzero(data11[:,1]==no2)[0] 
recno3inds11 = nonzero(data11[:,1]==no3)[0] 
recno4inds11 = nonzero(data11[:,1]==no4)[0] 

recno6inds11 = nonzero(data11[:,1]==no6)[0] 
recno7inds11 = nonzero(data11[:,1]==no7)[0] 
recno8inds11 = nonzero(data11[:,1]==no8)[0] 
recno9inds11 = nonzero(data11[:,1]==no9)[0] 
recno10inds11 = nonzero(data11[:,1]==no10)[0] 
recno11inds11 = nonzero(data11[:,1]==no11)[0] 
recno12inds11 = nonzero(data11[:,1]==no12)[0] 
recno13inds11 = nonzero(data11[:,1]==no13)[0] 
recno14inds11 = nonzero(data11[:,1]==no14)[0] 
recno15inds11 = nonzero(data11[:,1]==no15)[0] 
recno16inds11 = nonzero(data11[:,1]==no16)[0] 
recno17inds11 = nonzero(data11[:,1]==no17)[0] 
recno18inds11 = nonzero(data11[:,1]==no18)[0] 
recno19inds11 = nonzero(data11[:,1]==no19)[0] 
recno20inds11 = nonzero(data11[:,1]==no20)[0] 
recno21inds11 = nonzero(data11[:,1]==no21)[0] 
recno22inds11 = nonzero(data11[:,1]==no22)[0] 
recno23inds11 = nonzero(data11[:,1]==no23)[0] 
recno24inds11 = nonzero(data11[:,1]==no24)[0] 
recno25inds11 = nonzero(data11[:,1]==no25)[0] 
recno26inds11 = nonzero(data11[:,1]==no26)[0] 
recno27inds11 = nonzero(data11[:,1]==no27)[0] 
recno28inds11 = nonzero(data11[:,1]==no28)[0] 
recno29inds11 = nonzero(data11[:,1]==no29)[0] 
recno30inds11 = nonzero(data11[:,1]==no30)[0] 

ответ

3

Как правило, вы не хотите иметь 30 отдельных переменных, подобных этому, вы хотите иметь массив из 30 значений.

И если бы у вас было это, это был бы один лайнер; вам может потребоваться перенести правый массив на вторую ось, затем используйте оператор ==.

>>> data11 = np.array([[1,2,3],[4,5,6],[7,8,9]]) 
>>> data11[:,1] 
array([2, 5, 8]) 
>>> no1to5 = np.array([1, 2, 3, 4, 5]) 
>>> data11[:,1] == no1to5.reshape((5,1)) 
array([[False, False, False], 
     [ True, False, False], 
     [False, False, False], 
     [False, False, False], 
     [False, True, False]], dtype=bool) 

Конечно, вы можете также применить nonzero, возьмите первую ось, ... все, что вы хотите сделать, вы можете векторизации это до тех пор, пока у вас есть вектор, в первую очередь, а не большая коллекция отдельных значения, которые связаны только метаинформацией в именах переменных, с которыми вы связали их.

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