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

5

我有一个布尔类型的数组,像这样:

bool_arr = [True, True, False]

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

string_arr = ['r', 'r, 'k']

我该如何使用numpy进行映射?

那些是numpy数组吗? - Willem Van Onsem
是的,我只是为了简写而刚刚这样展示给他们看。 - Flemingjp
将两个字符串映射到每个布尔值上 - 不知道这是什么意思。将True映射为“r”,将False映射为“k”? - Denziloe
3个回答

5
>>> bool_arr = [True, True, False]
>>> ['r' if x else 'k' for x in bool_arr]
['r', 'r', 'k']

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)]

如果我们需要在两个字符串中进行选择,可以使用np.where

np.where(bool_arr, 'r','k')

2
您可以使用numpy.vectorize方法:
import numpy as np

x = np.array([True, True, False])
<b>mapping = ('k','r')</b>
result = <b>np.vectorize(lambda i:mapping[i])(x)</b>

这将会给出:

>>> result
array(['r', 'r', 'k'], 
      dtype='<U1')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接