2015-08-04 3 views
0

Я создал маску в следующих manner-Python маски для 2D массива

mask_v_co = numpy.ones((numRows_v_co, numCols_v_co)).astype(numpy.uint8) 
counter = 0 
for i in range(numRows_v_co): 
for j in range(numCols_v_co): 
    if Data_v_co[i,j] < 0: 
    counter += 1   # Counting missing observation 
    mask_v_co[i,j] = 0 

Как я могу генерировать маску с помощью Numpy замаскированную модуль массива, где 0 указывает на неверные записи (wherever Data_v_co[i,j] < 0) и 1, чтобы указать действительные записи?

+0

Это поможет найти точный ответ, если вы дадите ввод и вывод –

+0

Разве это не то, что вы уже сделали? Что вы хотите _do_ с этой маской? – cnluzon

+0

Я хочу сделать это в одной строке, а использовать два для циклов, поскольку 'Data_v_co' - это большой массив. Я хочу использовать этот массив маски, содержащий только одни и нули, как вход для kcluster в Pycluster. – Misha

ответ

1

Не могли бы вы просто сделать что-то вроде следующего?

import numpy as np 

mask = np.ones_like(Data_v_co, dtype='int8') 
mask[Data_v_co < 0] = 0 

# count zeros 
counter = np.prod(mask.shape) - mask.sum()