gpt4 book ai didi

python - 从查找表返回索引,允许空值且未找到

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:40 25 4
gpt4 key购买 nike

我正在尝试在查找表中查找索引,允许未找到的元素和不存在的元素(空)。

例如,在下面的测试数据中,变量“A”将映射到查找表中的“A”并返回索引 0(“A”在查找表中的位置)

我正在考虑使用 searchsorted 函数,但没有解释返回的是 0 还是 N。

“如果没有合适的索引,则返回 0 或 N(其中 N 是 a 的长度)。”

从下面,我想返回的数据是:[0,1,2,3,2]

0 - 匹配 A,1 - 在 B 上匹配,2 - 因此未找到 Else,3 - 没有值因此为 NULL,2 - 因此未找到。

规则:

如果匹配返回匹配的索引,如果 NaN 返回 NULL,如果没有找到返回其他。

testData = np.array(['A','B','B ',NAN,'Other'])
testLookup =np.array(['A','B','ELSE','NULL'])

>>> np.searchsorted(testLookup,testData)
array([0, 1, 2, 0, 4], dtype=int32)

最佳答案

NumPy 不是为混合类型数组设计的。但是,如果您打算使用 NumPy,则可以使用 np.searchsorted 通过 bool 索引 before 适本地转换您的值。

请记住指定 dtype=object 以避免您的 np.nan 值被自动转换为字符串。

testData = np.array(['A','B','B ',np.nan,'Other'], dtype=object)
testLookup = np.array(['A','B','ELSE','NULL'])

arr = testData.copy()
nulls = np.array([x != x for x in arr])
arr[nulls] = 'NULL'
arr[~np.in1d(arr, testLookup[:2]) & ~nulls] = 'ELSE' # or use np.isin

res = np.searchsorted(testLookup, arr)

# array([0, 1, 2, 3, 2], dtype=int64)

关于python - 从查找表返回索引,允许空值且未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com