So for the same thing
data.loc[:,data.isin([0,1]).all()]
does for a panda dataframe. I want to know how to do this when it is a ndarray?
1     40      0        0          0                  0        0          0
2     58      0        0          1                  0        0          0
3     41      0        1          1                  0        0          1
4     45      0        0          1                  1        0          1
5     60      0        1          0                  1        0          1
def checkBinary(data):
    getBinaryCol = data.loc[:,data.isin([0,1]).all()]
    if i in getBinaryCol:
        return True
    else:
        return False
This is the function for pandas dataframe how do i change getBinaryCol if passing data.values(ndarray) instead of only data?
Advertisement
Answer
The code below checks if each cell contains either 0‘s or 1‘s, allows both by using np.logical_or and checks if the condition is met for the whole column by using np.all.
mat = np.array(
    [[ 3, 0, 1, 1, 0],
     [ 5, 1, 4, 0, 0],
     [ 8, 0, 0, 0, 0]]
)
def is_col_bin(mat, i):
    return np.all(np.logical_or(mat[...,i] == 0, mat[...,i] == 1))
    
print([is_col_bin(mat, i) for i in range(mat.shape[-1])])
# [False, True, False, True, True]