2013-09-03 5 views
0

Скажем у меня есть массив чисел:Как «извлечь» определенные значения из массива?

a1 = np.arange(1,(30)+1)[:,None]  # or some other way og making (n,1) array 

и я хочу взять каждый 4-й номер факса, и назвать это что-то другое, я сделаю так:

a2 = aaa[0:30:2] 

Thats штраф, но как я могу вынуть все числа, кроме вышеуказанных? Другими словами:

[[2.] 
    [3.] 
    [5.] 
    [6.] 
    [8.] 
    [9.].... 

Я понятия не имею, как это сделать!

+0

«принимать каждый 4 факс из и назовите его чем-то другим ». Вы имеете в виду динамическое создание переменных, назначение значений из массива? Я настоятельно рекомендую избегать этого, так как это действительно сильный дизайн запаха, что вы делаете что-то неправильно. Вместо того, чтобы спрашивать об этом, вы должны действительно спросить о контексте, в котором вы хотите использовать этот код (см. [XY problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)) , – Bakuriu

+0

@Bakuriu Хорошо, вероятно, неправильный способ спросить. Я новичок в этом языке. Я хочу сделать массив (скажем, a3) со значениями a1, как описано в вопросе. Это было лучше? – user2734012

ответ

1

Создать булеву маску и применить его в массиве:

>>> a2 = np.ones_like(a1) 
>>> a2[::3] = 0 
>>> a1[a2.astype(bool)] 
array([ 2, 3, 5, 6, 8, 9, 11, 12, 14, 15, 17, 18, 20, 21, 23, 24, 26, 
     27, 29, 30]) 

Если вы хотите извлечь другие элементы, просто применить обратную булеву маску:

>>> a1[~a2.astype(bool)] 
array([ 1, 4, 7, 10, 13, 16, 19, 22, 25, 28]) 
+0

, Отлично! Большое спасибо! – user2734012

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