Emmanuel Sunil - 1 year ago 125
Python Question

# Logical operations with array of strings in Python

I know the following logical operation works with numpy:

``````A = np.array([True, False, True])
B = np.array([1.0, 2.0, 3.0])
C = A*B = array([1.0, 0.0, 3.0])
``````

But the same isn't true if B is an array of strings. Is it possible to do the following:

``````A = np.array([True, False, True])
B = np.array(['eggs', 'milk', 'cheese'])
C = A*B = array(['eggs', '', 'cheese'])
``````

That is a string multiplied with False should equal an empty string. Can this be done without a loop in Python (doesn't have to use numpy)?

Thanks!

You can use `np.where` for making such selection based on a mask -

``````np.where(A,B,'')
``````

Sample run -

``````In [4]: A
Out[4]: array([ True, False,  True], dtype=bool)

In [5]: B
Out[5]:
array(['eggs', 'milk', 'cheese'],
dtype='|S6')

In [6]: np.where(A,B,'')
Out[6]:
array(['eggs', '', 'cheese'],
dtype='|S6')
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download