我有一个布尔类型的数组,像这样:
bool_arr = [True, True, False]
我想将两个字符串映射到每个布尔值
string_arr = ['r', 'r, 'k']
我该如何使用numpy进行映射?
>>> bool_arr = [True, True, False]
>>> ['r' if x else 'k' for x in bool_arr]
['r', 'r', 'k']
使用索引的矢量化方法 -
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')
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')
numpy
数组吗? - Willem Van Onsem