Python - 将字符串映射到布尔数组

Fle*_*gjp 5 python string mapping boolean numpy

我有一个像这样的布尔数组

bool_arr = [True, True, False]
Run Code Online (Sandbox Code Playgroud)

我想将两个字符串映射到每个布尔值

string_arr = ['r', 'r, 'k']
Run Code Online (Sandbox Code Playgroud)

我将如何使用 numpy 映射它?

tim*_*geb 5

>>> bool_arr = [True, True, False]
>>> ['r' if x else 'k' for x in bool_arr]
['r', 'r', 'k']
Run Code Online (Sandbox Code Playgroud)


Div*_*kar 4

使用索引的矢量化方法 -

bool_arr = np.array([True, True, False]) # Input boolean array
strings = np.array(['k','r']) # Input array of strings for mapping

out = np.take(strings, bool_arr)
out = np.take(strings, bool_arr.astype(int))
out = strings[bool_arr.astype(int)]
Run Code Online (Sandbox Code Playgroud)

np.where如果我们需要在两个字符串之间进行选择,则使用-

np.where(bool_arr, 'r','k')
Run Code Online (Sandbox Code Playgroud)